导航

数据库的优化

一、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 报告

 

posted on 2021-09-27 09:29  molingke  阅读(61)  评论(0)    收藏  举报