最近看了《mysql性能调优和架构设计读书笔记》这本书,感受颇多,有一些写得非常好的地方,记下来,以备以后查用。
1、MySQL的主要适用场景 web网站系统,日志记录系统,数据仓库系统,嵌入式系统
2、物理文件
2.1、 日志文件含 错误日志,二进制日志,更新日志(5.0后不支持),查询日志,慢查询日志,redo日志
2.2、数据文件含 .frm文件(表结构信息),.myd文件(),
2.3、Replication相关文件含 master.info文件,relay log和relay log index,
2.4、其它文件含 master.info文件,relay log和relay log index,
3、备份
3.1、逻辑备份,mysqldump生成insert语句,或者生成指定分隔符格式的纯文本文件
3.2、物理备份,备份物理文件
4、优化
4.1、 统计类去除实时查询,定时执行保存到表,读取数据
4.2、大文本数据,多媒体数据不存储
4.3、常用查询冗余字段,争取不用关联表能取到数据
4.4、先优化执行频率最高的,再优化频率低的
4.5、mysql用的是b+树,所有数据都在叶子节点,索引会比较小,常用查询字段建立索引,所有查询尽量在索引中完成
4.6、唯一性太差的字段,不适合建立索引(如状态字段、类型字段),当一条Query返回的数据超过了全表的15%时 不应该用索引,更新频繁字段不适合索引
4.7、一般情况只会用一个索引,所以可以建组合索引
4.8、不支持索引函数,! =或者<>,join字段类型不一致,like的%abc前置
4.9、数据类型尽量小,长度尽量短
4.10、事务尽量小,减少锁表的时间