更新过程:普通索引 更新的目标页不在内存中可使用到change buffer。建议使用普通索引。html
change buffer:当须要更新一个数据页时,若是数据页在内存中就直接更新,而若是这个数据页尚未在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操做缓存在 change buffer 中,这样就不须要从磁盘中读入这个数据页了。在下次查询须要访问这个数据页的时候,将数据页读入内存,而后执行 change buffer 中与这个页有关的操做。经过这种方式就能保证这个数据逻辑的正确性。
写磁盘
的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘
的 IO 消耗。索引选择异常和处理mysql
alter table SUser add index index2(email(6));
前缀索引长度:创建索引时关注的是区分度,区分度越高越好。由于区分度越高,意味着重复的键值越少。所以,咱们能够经过统计索引上有多少个不一样的值来判断要使用多长的前缀。sql
mysql> select count(distinct left(email,4))as L4, count(distinct left(email,5))as L5, count(distinct left(email,6))as L6, count(distinct left(email,7))as L7, from SUser;
对身份证相似的索引,若是用前缀的话,区分度过低,就不合适,解决方案有几种。数据库
更新主要是写内容和日志,更新内容会先存入内存(没有同步的叫脏页),等时机(4种状况)再写入磁盘。缓存
全字段排序:并发
rowid排序:socket
隐式字符编码转换:函数
mysql> select d.* from tradelog l , trade_detail d where d.tradeid=CONVERT(l.tradeid USING utf8) and l.id=2;
第一类:简单查询长时间不返回工具
第二类:查询慢oop
IO瓶颈解决方法:
主备切换,binlog格式
主备延迟的几种状况
策略
解决办法:影响系统环境