mysql数据库全面优化与思想

1、硬件优化

a、CPU 一台机器最好在8-16核,中小企业2-4核最少
b、mem 96G-128G,可以跑3-4个实例,32-64G可以跑2个实例
c、硬盘 disk 数量越多越好。性能:ssd(高并发)>sas(普通业务线上)>sata(线下)
raid 4块盘:RAID0>RAID10>RAID5>RAID1
d、网卡 多块网卡bond,以及buffer,tcp优化

2、软件优化

操作系统:x86_64系统
软件:Mysql 编译优化

3、my.cnf里面参数的优化

优化的幅度很小,大部分是架构与sql语句的优化
重要参数

#一般设置物理内存的30%到50%较为合理,不要50%超过
#他的作用是吧数据库的数据缓存到buffer_pool里面
innodb_buffer_pool_size=2048M
#提交后立即刷新log
innodb_flush_log_at_trx_commit=2
#文件句柄,这个要调大
open_files_limit=65535
#mysql的缓存,mysql缓存不优秀,不要设置过大,利用redis等做缓存就行
query_cache_size=64M
query_cache_limit=4M
query_cache_min_res_unit=2k
#临时表,不要给特别大,会占用磁盘空间
tmp_table_size=256M
max_heap_table_size=256M
#设置binlog过期天数,自动清理,binglog最好不要手动清理,容易出问题
expire_logs_days=10
#索引的缓存大小,如果是MyISAM引擎就要给的够大,比如2048M
key_buffer_size=32M
#禁用dns解析,不加的话可能会出现login登录问题
skip_name_resolve

思想:
监控:上面的参数是一般情况下的参数,具体看业务
命令监控:show global status\G
调优的监控工具:mysqlreport

3、SQL语句的优化

a、索引的优化
1、最好在项目开发期让DBA参与设计表,通过slow-log抓出慢sql
2、慢查询日志分析工具—mysqlsla
3、比较好的方式每天晚上0点定时分析慢查询,发到核心开发,DBA,运维,CTO邮箱。
然后由DBA给出建议,开发确认,上线实施,
b、大的复杂的SQL语句拆分成多个小的SQL语句
c、数据库是存储数据的地方,但是不是计算数据的地方。
d、搜索功能,一般不要用Mysql数据库

4、架构优化

1、业务拆分:搜索功能,like ‘%chao%’,一般不要用mysql数据库
某些业务应用使用nosql持久化存储,例如:redis等,比如粉丝关注,好友关系等等
2、数据库前端必须要加cache,例如:redis,比如:用户登录,商品查询
3、动态的数据静态化。整个文件静态化,页面片段静态化
4、数据库集群与读写分离。一主多从,通过程序或者dbproxy进行集群读写分离
5、单表超过2000的时候,就需要拆库拆表 ,人工拆表拆库(登录、商品、订单)

5、流程,制度,安全优化

任何一次认为数据库记录的更新,都要走一个流程
a、人的流程:开发->核心开发->运维或DBA
b、测试流程:内网测试->IDC测试->线上执行
c、客户端控制,比如只能走内网,只能走vpn,

猜你喜欢

转载自blog.csdn.net/qq_25611295/article/details/79127430
今日推荐