Mysql性能优化、使用总结记录

来源:互联网 发布:淘宝店铺号怎么选靓号 编辑:程序博客网 时间:2024/05/16 11:19

“积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以致千里;不积小流,无以成江海。骐骥一跃,不能十步,驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇蟮之穴无可寄托者,用心躁也。是故无冥冥之志者,无昭昭之明;无昏昏之事者,无赫赫之功。行衢道不至,事两君者不容。目不能两视而明,耳不能两听而聪。螣蛇无足而飞,梧鼠五技而穷。诗曰:“尸鸠在桑,其子七兮。淑人君子,其仪一兮。其仪一兮。心如结兮。”故君子结于一也。”——荀子《劝学篇》


一、题记:

这里主要记录自己工作时在使用mysql过程中考虑的事项、解决问题收集的参考资料和学习过程,以供自己日后备查和初级同学参考。数据库优化经验还是得多向专业DBA学习,不敢班门弄斧~

二、整理:

  • 1.创建表&写SQL时(每一点都有为什么):
    1>注意各存储引擎的区别和选择(5.1老版本前默认是MyISAM,新版本默认InnoDB)
    2>选择精确、适合的数据类型(如典型的IP、时间)
    3>所有字段都非空,给予默认值,尽量不使用NULL(索引的影响)
    4>表尽量有功能说明,每列也尽量有功能comment注释(方便自己方便他人)
    5>针对Innodb表,尽量不执行SELECT COUNT(*)语句
    6>把拖沓复杂,速度慢的的查询分解成多个简洁明了的查询,尽管查询多次,但总体效率却可能反而更高,且减少锁表可能
    7>执行查询时,尽量不使用外部函数(破坏使用索引)
    8>在索引字段上使用 LIKE 查询时,左边不要使用 ‘%’ 修饰符(否则走不到索引)
    9>多用Explain分析SQL执行过程

  • 2.使用Explain优化SQL:
    1>order by优化
    2>group by优化
    3>limit优化
    4>更多…

  • 3.服务器运行状态查看:
    1>使用show status,优化参考
    2>使用show process

  • 4.服务器优化:
    MySQL数据库常见的2个瓶颈是CPU和I/O,CPU在饱和时候一般发生在数据装入内存或从磁盘上读取数据时。磁盘I/O瓶颈发生在装入数据远大于内存容量时,如果应用分布在网络上,那么当查询量相当大时那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态

    1>了解服务器重要配置,如wait_timeout、max_connections、innodb_page_size、innodb_sort_buffer_size等,参考官方手册
    2>参考阿里DBA简朝阳优化

1 0
原创粉丝点击