MySQL数据库优化

一、硬件优化(不要用虚拟机,要用物理机)

1、CPU:尽量采用64位cpu ,一台机器8-16颗cpu
2、mem(内存):一般情况下 96G-128G ,跑3-4个实例;  32G-64G ,跑2个实例
3、disk盘:数量越多越好。性能 ssd(高并发) > sas(普通业务线上) > sata(线下)
4、磁盘raid: raid10>raid5>raid1(主库用raid10,从库用raid0)
5、网卡:多块网卡做bound,以及buffer,tcp的优化

二、软件优化

操作系统:64位最好
软件:尽量采用比较新的源码包,编译优化

三、my.cnf里参数的优化

my.cnf里参数优化的幅度很小。大部分是架构和SQL调优,在这里也不过多说明
innodb_buffer_pool_size = 2048M (为物理内存的30%到50%)
sort_buffer_size = 2M
read_buffer_size = 1M
skip-name-resolve      #不加的话可能会有用户权限错误

四、SQL语句优化

1、索引优化
减少上线后的慢SQL数量,哪些数据没有走索引,首先抓出慢SQL  (建议在前期,开发、DBA首先参与进去,怎么建索引,怎么建表)
long_query_time = 2 
log-slow-queries=/var/mysql/slow-log.log 
按天轮询:slow-log.log

2、SQL语句的拆分(大的复杂的SQL语句拆分成多个小的SQL语句)
子查询,join连表查询,但是某个表4000万条记录,拆分就没用了。

3、数据库时存储数据的地方,但是不是计算数据的地方
对数据计算、应用类的处理,都要拿到前端应用处理,禁止在数据库上处理。

4、搜索功能,一般不要用MySQL数据库,例如:like "%186254%",因为这样的语句不走索引。

五、架构的优化

1、业务上进行拆分:搜索功能,一般不要用MySQL数据库,例如:like "%186254%"
2、数据库前端加cache,例如:memcache(用户登录,商品查询)
3、某些业务应用使用nosql持久化存储,例如redis,memcachedb
4、把动态的数据静态化,(网站发表新闻,生成html,放到缓存里面;整个文件静态化,页面片段静态化)。
5、数据库集群与读写分离,一主多从,通过程序或者dbproxy进行集群读写分离
6、单表超过两千万还慢,这时需要拆库拆表。(人工拆库拆表,前端通过hash算法进行轮询[用户登录、商品、订单])

六、流程、制度、安全优化

任何一次人为数据库记录的更新,都要走一个流程:
a.人的流程:开发核心开发运维或者DBA
b.测试流程:内网测试IDC测试线上执行
c.客户端的管理,开发用phpmyadmin。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值