Mysql 运维优化
存储引擎类型
Myisam 速度快,响应快。表级锁是致命问题。
Innodb 目前主流存储引擎
行级锁
务必注意影响结果集的定义是什么
行级锁会带来更新的额外开销,但是通常情况下是值得的。
事务提交
对i/o效率提升的考虑
对安全性的考虑
HEAP 内存引擎
频繁更新和海量读取情况下仍会存在锁定状况
内存使用考量
理论上,内存越大,越多数据读取发生在内存,效率越高
要考虑到现实的硬件资源和瓶颈分布
学会理解热点数据,并将热点数据尽可能内存化
所谓热点数据,就是最多被访问的数据。
通常数据库访问是不平均的,少数数据被频繁读写,而更多数据鲜有读写。 学会制定不同的热点数据规则,并测算指标。
热点数据规模,理论上,热点数据越少越好,这样可以更好的满足业务的增长趋势。
响应满足度,对响应的满足率越高越好。
比如依据最后更新时间,总访问量,回访次数等指标定义热点数据,并测算不同定义模式下的热点数据规模
性能与安全性考量
数据提交方式
innodb_flush_log_at_trx_commit = 1 每次自动提交,安全性高,i/o压力大 innodb_flush_log_at_trx_commit = 2 每秒自动提交,安全性略有影响,i/o承载强。
日志同步
Sync-binlog =1 每条自动更新,安全性高,i/o压力大
Sync-binlog = 0 根据缓存设置情况自动更新,存在丢失数据和同步延迟风险,i/o承载力强。
性能与安全本身存在相悖的情况,需要在业务诉求层面决定取舍