码迷,mamicode.com
首页 > 数据库 > 详细

mysql优化

时间:2018-11-13 20:46:38      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:机器   简洁   登录   导致   proc   sql语句   核心   my.cnf   集群   

1.硬件优化

    a.cpu 一台机器8-16颗8-16G 2-4颗
    b.内存 96G-128G 3-4个实例  32-64G 跑2个实例
    c.disk数量越多越好,性能:ssd (高并发)> sas(普通业务线上) >sata
     raid10>raid5>raid1
    d.网卡,多块网卡bond,以及buffer,tcp优化

2.参数优化

 优化的幅度很小,大部分 架构以及SQL语句优化
 监控 生产参数时一般情况下参数
show global status\G
工具 mysqlreport

3.sql优化

            a.索引的优化
                        1)抓出慢SQL,配置my.cnf
                                 long_query_time = 1
                                 log-slow-queries = /data/3306/slow.log
                                 按天轮询slow-log.log

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

            b.大的复杂的SQL语句拆分成多个小的SQL语句
            c.数据库是存储数据的地方,但不是计算数据的地方
            d.搜索功能,一般不用MYSQL数据库

4.架构优化

1.业务拆分,搜索功能,like ‘%全职%’,一般不要用数据库
2.数据库前端使用nosql持久化存储
3.数据库集群与读写分离,一主多从,通过程序进行读写分离
4.单表超过2000万,拆库拆表
5.动态数据静态化。

流程、制度、安全优化

如何一次人为数据库记录的更新,都要走一个流程
a.人的流程 开发--->核心开发--->运维或DBA

网站打开慢

1)show full processlist:
2)慢查询语句
             long_query_time = 1
           log-slow-queries = /data/3306/slow.log
a、数据库负载高,有慢查询,做联合索引案例,查看表结构,有没有建索引
b、带宽满了,磁盘满了,连接数消耗完了
c、数据库中像 Like’%×××%’ 这样的语句特别多,导致数据库负载高,这样的语句对于数据库没有太大的优化余地

登录数据库查看 show full processlist:
mysql -uroot -p’111’ -e “show full processlist” | grep -vi sleep 数据库中像 Like’%×××%’ 这样的语句特别多,导致数据库负载高,这样的语句对于数据库没有太大的优化余地
 优化方法
 1)业务上实现先登录再搜索,减少搜索次数
 2) 分析web日志的ip,如果有大量频繁的搜索,一般是爬虫在爬你的网站(Awstats是一个免费非常简洁而且强大有个性的统计工具)
 3) 配置多个从库,程序上实现读写分离
 4) 在数据库前端加上缓存服务器

tips
mysqldump大于50g就用xtarbackup
mysqlbinlog -d aaa mysql-bin.0020 > aaa.sql (生成的sql都是aaa库的)

mysql优化

标签:机器   简洁   登录   导致   proc   sql语句   核心   my.cnf   集群   

原文地址:http://blog.51cto.com/12473494/2316541

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!