MySQL数据库优化
2017-06-27 09:38
169 查看
一、硬件优化(不要用虚拟机,要用物理机)
二、软件优化
三、my.cnf里参数的优化
四、SQL语句优化
五、架构的优化
六、流程、制度、安全优化
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。
相关文章推荐
- 完全优化MySQL数据库性能的八个方法
- 在Linux高负载下mysql数据库彻底优化
- 详解MySQL数据库优化的方案与实践
- MySQL数据库性能之硬件优化
- 优化Mysql数据库的8个方法
- MySQL数据库的性能的影响分析及其优化
- MySQL数据库的优化(上)单机MySQL数据库的优化
- 总结常见的mysql数据库优化操作
- 八个方面来讲解如何全新优化MySQL数据库性能
- MySQL数据库优化
- 浅谈MySQL数据库优化
- 浅谈mysql数据库优化技术
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- MySQL数据库优化法则总结
- 一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例
- mysql数据库优化3
- mysql数据库优化
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- MySql数据库优化
- MySQL数据库性能优化之缓存参数优化