数据库相关总结
一.对两张表的结果进行合并起来,会有临时
union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序; (会去重,而去重所需要的开销很高,)
union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;(不会去冲,效率高)
二.分库分表的策略
首先查询的时候,怎么定位具体的表:查询之前,就要知道在哪张表;
1.按范围分表,如:id:1-1000万 放一张表;10001-2000万放一张表
2.月份,年份分表,1个月一张表,每年一张表
比如说按照时间范围来分库分表,每个库表中存放的都是连续时间范围的数据。但是这种方式一般很少用,因为很容易会产生热点问题,大量的流量都打在最新的数据上了。这种方案的优点在于扩容的时候非常简单,比如只要预备好每个月都准备一个库就可以了,到了下一个新的月份自动将数据写入新的库。缺点则是,如果大部分请求都是访问最新的数据,那么在这里,分库分表的设计目的就只是简单的扩容,而不是为了应对高并发了。
3.根据hash算法分表,每次通过标识算出表明
按照某个字段的hash值均匀分散,这个较为常用。优点在于可以平均分配每个库表的数据量和请求压力;缺点在于扩容比较麻烦,因为会存在一个数据迁移的过程,即之前的数据需要重新计算hash值并重新分配到不同的库表中。
三. myisam与innerDb 引擎区别
Innerdb引擎,索引与数据放在一起,叶子结点包含了完整的数据记录,两个文件,存结构,索引和数据,集聚索引,或聚簇索引。。
innerdb支持事务
数据库文件两个:
.frm:文件存储表定义
.iad:存储索引和数据
myisam引擎:索引与数据不在一起,就是非集聚索引(有三个文件,frm,存表结构,存数据,存索引,i d),数据存在磁盘data目录下
不支持事务
四:B树与B+tree区别
B+树:叶子结点数据有指针,可以查找范围,数据直接存储在叶子节点中
B树: 叶子节点只存储了索引,需要根据索引去查数据,
没有指针,要查询范围,如,>20的值,每次都要从根节点load
五:1.分库分表,集群;创建表结构没问题,sql写的没问题;索引没问题;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App