1.硬件优化 

a.CPU,2-8颗

b.mem 90G-128G.3-4个实例,32G-64G-跑两个实例

c.disk 数量越多越好。性能>ssd >sas >sata  

RAID  4块盘 RAID0>RAID10>RAID5>RAID1

d。网卡,多块网卡bond,及buffer,tcp优化


2.软件优化 

操作系统:x86_64系统

软件:mysql编译优化


3.my.cnf参数优化 

优化幅度很小,大部分架构以及SQL语句优化

命令监控:show global status\G

工具:mysqlreport (mysql性能调优工具)

4.SQL语句优化

a.索引优化

   1)抓出慢SQL,配置my.cnf(百度做法为白名单,项目开发,DBA参与,减少上线后的慢SQL数量)

            long_query_time = 2

            log-slow-queries=/data/3306/slow-log.log

            按天轮询

    2)    慢查询日志分析工具(推荐mysqlsla)

            (mysqldumpslow,mysqlsla,myprofi,mysql-explain-slow-log,mysqllogfilter)

    3)每天晚上0点定时分析慢查询,发到核心开发,DBA分析,及高级运维,CTO的邮箱。

         DBA分析给出优化建议---核心开发确认更改---DBA线上处理。

b.大的复杂的SQL语句拆分成多个小的SQL语句

    子查询,JOIN连表查询,

c.数据库是存储的地方,但不是计算数据的地方。

    对数据计算,应用类处理,都要拿到前端应用解决。禁止

d.搜索功能, like %内容%,一般不要用Mysql数据库

5.架构上的优化

    a.业务拆分,搜索功能, like %内容%,一般不要用Mysql数据库

    b.动态的数据静态化。整个文件静态花,页面片段静态化

    c.某些应用使用nosql持久化存储,例如:memcahcedb,redis,ttserver.

    d.数据库前端必须加cache.  例如:memcached,用户登陆,商品查询。

    e.数据库集群与读写分离。一主多从。通过程序或者dbproxy进行集群读写分离。

    f.单表超2000万。拆库,拆表。(登陆/商品/订单)

6.流程,制度,安全优化    

任何一次人为数据库人更新,都要走一个流程:

    a.人的流程:开发---核心开发---运维或DBA

    b.测试流程:内网测试---IDC测试---线上执行

    c.客户端管理:phpmyadmin