我们先了解mysql数据库特点 mysql特点 1)、not oracle,not sql server ,not postgresql; 2)、not excel,not access; 3)、not file storage; 4)、not calculator; 5)、not seach engin; mysql 利用cpu的特点: 1)、mysql<5.1,多核心的利用是非常差的,能用到一个核心; 2)、5.1可以利用到4核心; 3)、5.5可以利用到24核心; 4)、5.6可以利用到64核心; 5)、mysql每个连接对应的是一个线程,每个query只能用到一个cpu核心, 建议让sql尽可能的快速,不要长时间堵塞到哪里,让每个事物短小精悍,快速提交。 内存利用特点: 1)、类似oracle的SGA、PGA,注意PGA不宜分配过大; 2)、内存管理简单、有效。在TPS高并发环境下,可增加物理内存已减少物理 IO,提高并发性能; 3)、官方分支锁并发竞争比较严重,mariadb、percona进行优化; 4)、mysql有类似oracle library cache的query cache,但效果不佳,建议关闭;执行计划没有缓存(类似oracle的library cache) 5)、通常用内存按热点数据总量的15%-20%来规划,如果专单实例可以分配物理内存的 50%-70%左右; 6)、在mysql存储类似于k-v简单数据,采用memcached、redis等NOSQL来缓存; mysql对磁盘利用特点: 1)、binlog、redo log、undo log主要是顺序I0; 2)、datafile是随机IO和顺序IO都有; 3)、OLTP业务以随机IO为主,建议加大内存,尽量合并随机IO为顺序IO; 4)、OLAP业务顺序IO为主,极大内存的同时增加磁盘数量提高顺序IO性能; 5)、myISAM是堆组织表(HOT),innodb是索引组织表(IOT); 6)、innodb相对MYisam更消耗磁盘空间; 优化思路 确认问题 确认瓶颈 制定方案 测试方案 实施方案 回顾反馈 后续分享