mysql优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql优化相关的知识,希望对你有一定的参考价值。

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 statusG
工具 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优化的主要内容,如果未能解决你的问题,请参考以下文章

如何优化C ++代码的以下片段 - 卷中的零交叉

从JVM的角度看JAVA代码--代码优化

部分代码片段

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

linux中怎么查看mysql数据库版本

从mysql的片段中加载ListView