蚌埠建设学校网站,icann 域名注册网站,抖音官方推广平台,832网络销售平台B-Tree和BTree区别共同点#xff1b;一个节点可以有多个元素#xff0c; 排好序的不同点#xff1a;BTree叶子节点之间有指针#xff0c;非叶子节点之间的数据都冗余了一份在叶子节点BTree是B-Tree 的升级mysql什么情况设置了索引#xff0c;但无法使用a.没符合最左原则b.…B-Tree和BTree区别共同点一个节点可以有多个元素 排好序的不同点BTree叶子节点之间有指针非叶子节点之间的数据都冗余了一份在叶子节点BTree是B-Tree 的升级mysql什么情况设置了索引但无法使用a.没符合最左原则b.字段进行了隐式数据转化c.走索引没有全表扫描效率高索引的基本原理把无序的数据变成有序的查询a.把创建了索引的列的内容进行排序b.把排序结果生成倒排表c.在倒排表上拼上数据地址链d.查询的时候先拿倒排表内容没在取数数据链从而拿到具体数据索引设计原则a.适合索引的列出现在where中的列或连表查询的指定列b.基数较小的表索引效果比较差没必要建索引 c.辨识度不高的字段没必要d.字节长度过大的字段没必要sql慢查询优化a.分析sql语句是否加载了额外的数据b.explain 分析执行计划修改语句修改索引d.数据量是否太大如果太大 横向纵向分表mysql如何分库分表分库分表的方式和分片策略有哪些分库分表后sql语句执行流程什么是分库分表当表中的数据量过大整个查询效率就会降低的非常明显。为了提升效率就要将整个表的数据分散到多个数据库的多个表中分库分表的策略 垂直分片 从业务和数据需求上将不同的数据表分散到不同的数据库。能解决数据库文件过大的问题但是从根本上解决不了数据大查询慢的问题。 水平分片 将表的数据拆分放到不同的数据库和表中可以解决数据量过大造成的查询效率过低的问题。 水平分片策略取余取模优点数据平均缺点扩容非常麻烦按照范围分片比较好扩容数据分布不均匀按照时间分片比较容易将热点数据区分出来按枚举分片例如按地区 多大数据量适合分库分表数据超过500w或文件大于2G分库分表常用组件Mycat\ShardingSphere分库分表后SQL执行流程: sql解析》查询优化》sql路由》sql改写》sql执行》结果归并什么是脏读幻读不可重复读要怎么处理脏读在事务进行过程中读取到了其他事务未提交的数据。不可重复读在事务执行过程中多次查询的数据不一致幻读在一个事务中用同样的操作查询数据得到的记录数不一致。处理方式有很多种加锁事务隔离mvcc加锁脏读在修改时加排它锁直到事务提交才释放。读取时加共享锁读完释放锁。不可重复读读书数据时加共享锁写数据时加排它锁。幻读加范围锁事务的基本特性和隔离级别 基本特性原子性指一个事务的操作要么全部成功要么全部失败。一致性数据苦总是从一个一致性的状态转换到另一个一致性的状态。隔离性事务的修改在最终提交前对其他事务是不可见的持久性一旦事务提交所有的修改会永久保存到数据库中隔离性的4个隔离级别 读未提交 可能会读到其他事务未提交的数据也叫脏读读已提交 两次读取结果不一致叫不可重复读可重复读 mysql默认级别就是每次读取结果一样可能产生幻读串行 一般不会使用他会给每一行读取的数据加锁会导致大量超时和锁竞争问题。