数据库

索引

大部分数据库索引底层为平衡二叉树,B Tree B+Tree树

一个没有主键的表,存储在磁盘中时,是无序存储的,也就是一行行数据存储。如果加上了主键,那么表就会以树状结构存储,整个表就是一个索引,这就是聚集索引,主键的作用就是把表的数据格式转换成索引的格式放置


主键聚集索引

当查找条件为主键时,会遍历树节点,找到结果表数据。
平衡树结构就是为了减少查询所消费的时间,如果是无序结构存储,一次查询最坏可能需要全部遍历一遍,而平衡树结构树的层数就是查询次数。而又是由于平衡树结构问题,在增加新的节点或删除节点时,为了保持树的平衡特性,那么需要对树进行重新排列,重新将树梳理为平衡树,这也带来了性能开销。

聚集索引树的节点是表的主键字段,而平常所用的索引为非聚集索引,可以自己选择字段建立索引,那么树的节点就是所选择的索引字段,每个索引字段都会形成一颗平衡二叉树被复制出来单独存储,所以建立索引会增加表的存储空间。
查找顺序:
通过聚集索引可以根据主键找到对应的表数据,而非聚集索引查找,则是先通过索引字段内容找到对应的主键值,再通过主键值的聚集索引,找到对应的表数据

非聚集索引

通常情况下,聚集索引是唯一找到表数据的方法,而存在一种覆盖索引查询,也就是复合索引或多字段索引,同时建立两个字段的索引,条件为A字段,查询结果为B字段,那么这样就不需要通过A字段找到主键,再找到表信息中的B字段值,而是直接通过A字段找到对应的B字段值

分库分表

  • 按功能划分表,三范式,适合根据业务逻辑划分
  • 按规则划分表,如每天一个表,不同性别存放不同的表,适合单表内容过多

分库分表存在的问题

  • 分库会出现事务管理问题

不同数据库不方便统一进行事务回滚,而用分布式事务管理功能则性能消耗过多,若将不同库的事务交由程序去管理,则增加了编程方面的负担。

  • 跨库跨表连接问题

原本一次查询即可得到的结果,可能需要多次查询,且切换数据源

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 13,325评论 0 44
  • 对于数据库的优化主要包括三个部分:查询优化、索引优化和字段类型优化,其中,索引优化则是数据库优化的重中之重。一个查...
    charming_coder阅读 9,822评论 1 18
  • 索引的基本原理,以及数据是如何被访问的 (一)SQLS如何访问没有建立索引的数据表 Heap译成汉语叫做“堆”,其...
    安易学车阅读 8,806评论 0 8
  • 阿信,不相信一见钟情。他觉得不可思议。然而,这次他信了。 那是一个夏天,他搭班车去上班。里面挤满了人,没有位置了。...
    我是spurs迷阅读 2,532评论 1 0
  • 云想衣裳花想容,春风拂槛露华浓。 若非群玉山头见,会向瑶台月下逢。 —...
    云水轩儿阅读 1,004评论 0 0

友情链接更多精彩内容