硬件优化
软件优化
my.cnf参数优化,命令监控show global statusG
调优工具mysqlreport
sql语句优化
索引的优化
白名单机制--百度,就是让一些不规范的语句执行查询前经过DBA的确认,不通过不给执行,项目开发时让DBA参与,减少上线后的慢sql查询数量
抓出慢SQL,配置my.cnf
long_query_time=2
log-slow-queries=/data/slow-log.log
按天轮询slow-log.log
慢查询日志分析工具:mysqldumpslow mysqlsla myprofi mysql-explain-slow-log mysqllogfilter
每天晚上0点定时分析慢查询,发到开发,DBA,CTO邮箱,由DBA给出优化建议,开发确认后,DBA线上执行
大的复杂的SQL语句拆分成多个小的语句
数据库是存储数据的地方,不是计算数据的地方,所以对数据的计算,应用类处理,都要在前端解决,禁止在数据库上处理
搜索功能,like%查询名字%没法用索引,一般不要用MySQL数据库,用memcached或者redis
架构优化
业务拆分:like%查询名字%没法用索引,一般不要用MySQL数据库
数据库前端加cache:用memcached或者redis,例如:用户登录,商品查询
某些业务使用nosql持久化存储,redis,ttserver,例如:粉丝关注,好友关系等
动态数据静态化,整个文件静态化,页面片段静态化
数据库集群与读写分离,一主多从,通过程序或者dbproxy进行集群读写分离
单表超过2千万,拆库拆表,人工拆表拆库(登录,商品,订单)
流程,制度,安全优化
任何一次人为数据库记录更新,都要走一个流程
人的流程:开发---核心开发--运维或DBA
测试流程:内网测试--IDC测试