您的位置:首页 > 数据库 > MySQL

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

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

一、题记:

这里主要记录自己工作时在使用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简朝阳优化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: