数据库的优化
一、MySQL的优化
1.流程: 用户体验———监控————调优(三位一体不能少)
用户体验:网站打不开 浏览器、网络,客户网络,骨干网络,机房网络,服务器问题
打开慢:大量的用户、服务器
监控:CPU使用率 内存使用率 IO网络使用率
Nginx处理连接数
tcp连接数
mysql:连接数 缓存使用率 索引命中率
系统出问题:抱警 :邮件 手机号
优化:CPU参数:优化
升级CPU 调整CPU调度策略: Nginx去除一些占用CPU资源的功能
做完以上操作就查看监控:测试是否卡顿
2.硬件层面和软件层面
硬件:
CPU选型:oracle
判断密集型:通过检查工作负载:top
如果cpu1 120% cpu2 10% :查看是不是支持多核CPU
做一个亲缘绑定:Nginx 4个线程1CPU
Nginx1 CPU1
Nginx2 CPU2不用做上下文切换
、、、
内存选型:配置大容量的原因并不是可以在内存中存储数据,为了避免磁盘IO,平衡内存和磁盘的大小,速度,成本和其他因素
硬盘选型:IO高 容量大(保证数据不丢失)尽量使用顺序IO,避免使用随机IO
ssd 固态硬盘 fc san 光纤共享存储等;raid10
选硬盘的决定因素:存储容量,传输速度,访问时间,主轴转速,物理尺寸等
网卡选型:双网卡 万兆 保证带宽足够
raid选型:raid5 raid6 raid1 raid0
异地容灾:延迟在10ms以内
mysql ssl 证书 1.中间件:阿里云 解析mysql协议 并行写入从服务器
2.分库分表
软件:
操作系统:
linux /unix选择比较新的版本
文件系统:
ext2 ext3 ext4 xfs现在用的
fat fat32 ntfs
网络优化:调整内核参数提升数据库的网络性能
tcp连接数
磁盘调度策略:Linux队列调度决定了到块设备的请求实际上发送到底层设备的顺序默认cfg(完全公平排队)
cat /sys/block/sda/queue/schedlue
内存:关闭NUMA :调整线程和内存交换分区:
例;物理内存 80% 开启swap交换分区 (了解)
mysql层面
mysql中show processlist;查看连接数
show variables like '%connections%';查看参数设置的是多少
sql优化:mysql选择合适的字符集 /各式各样语言问题:UTF8/中文,数据量大,大量的运算:GBK(理论上可以获得更好的性能,但是不能推荐使用)
新型的互联网和移动互联网混合的业务:推荐使用utf8mb4 替代utf8
开源:自己开发产品:开发人员自行决定 dba只能建议
参数优化
Innodb:
120
innodb_buffer_pool_size
innodb 内部使用一个缓存池,来保存索引和原始数据,理论上此值设置的越大,存取表里面的数据所需的硬盘io就越少,(官方建议设置为物理内存的50%-80%)实际根据工作经验。
#####################################如何修改
show global variables like 'innodb_buffer_pool_size';
在/etc/my.cnf中添加innodb_buffer_pool_size=2048M
show global variables like 'innodb_buffer_pool_size';
select @@innodb_buffer_popl_size;
select @@innodb_buffer_popl_size/1024/1024/1024;
##################################
select @@max_connections;和 show variables like 'max_connections;效果一样
innodb_data_file_path=ibdata1:12M:autoextend innodb数据文件的存放位置,默认是12MB大小,单独文件,自动以64MB(默认)扩展
innodb_additional_mem_pool_size=16M 用来设置存储的数据目录下信息和其内部数据结构内存池的大小,应用程序的表越大,就需要分配的内存越多,但是对于一个稳定的系统,这个参数的值比较稳定,如果不够用,会从操作系统分配内存,并在错误日志中记录警告信息,默认1M如果发现有错误信息,增加即可
innodb_file_io_thread=4文件io线程,通常为4 Windows可以设置为更大
innodb_thread_concurrency=8线程并发数:和CPU有关
innodb_lock_wait_timeout=120
innodb_file_per_tables独立表空间:
变量优化工具:wget https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-re85ce15-el7-x86_64-bundle.tar
业务优化:
架构;采用主从,读写分离/打开慢查询日志:slow log: ls
慢查询日志分析工具:oracle awr 报告
浙公网安备 33010602011771号