zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql参数调优

mysql 参数 调优
2023-09-27 14:26:37 时间
磁盘调度策略-write back(回写)(宕机的话cache中数据,如果没有刷入磁盘,可能丢失)
数据写入cache既返回,数据异步的从cache刷入存储介质
这里写图片描述
生产环境里一般不太会用裸设备,通常会使用RAID卡对一个盘或多块盘做RAID RAID卡会预留一块内存,来保证数据高效的存储与读取 常见的RAID类型:RAID1、RAID0,RAID10、RAID5
这里写图片描述
这里写图片描述 RAID如何保证数据安全 BBU(backup battery unit)
BBU保证在WB策略下,即使服务器发生掉电或宕机,也能够将缓存中的数据写到磁盘,从而保证数据的安全 BBU损坏或没电了,这时如果宕机,cache中数据可能丢失。并且,调度策略会从WB- WT,这时数据库性能会瞬间下降。
实时监控数据库服务器的负载情况(IO、load、cpu利用率、网卡流量) 实时监控Mysql内部状态值
Com_Select/Update/Delete/Insert(以判断数据库的请求是否变多) Bytes_received/Bytes_sent(接收发送字节数,反映mysql总的吞吐量) Buffer Pool Hit Rate(innoDB buffer区的命中率,直接反映性能) Threads_connected/Treads_created/Threads_running(连接的状态,如果前两项特别多,可以看看应用是否使用连接池或者设置是否合理;)
这里写图片描述
innodb_thread_concurrency(在5.5以后的版本,建议关闭)
innoDB内部并发控制参数,设置为0代表不做控制 如果并发请求较多,参数设置较小,后进来的请求将会排队
只对合适的字段加索引,索引太多影响写入性能 监控服务器磁盘IO情况,如果写延迟较大则需要扩容 选择正确的mysql版本,合理的设置参数
innodb_flush_log_at_trx_commit sync_binlog(写性能主要参数) innodb log file size innodb_io_capacity innodb insert buffer
innodb_flush_log_at_trx_commit 控制redo日志的刷新
控制innoDB事务的刷新方式,一共有三个值:0,1,2
N=0 每隔一秒,把事务日志缓冲区的数据写到日志文件中,以及把日志文件的数据刷新到磁盘上(高效,但不安全) N=1 每个事务提交时候,把事务日志从缓冲区写到日志文件中,并且刷新日志文件的数据到磁盘上,优先使用此模式保障数据安全性(低效,非常安全) N=2 每个事务提交的时候,把事务日志数据从缓存区写到日志文件中;每隔一秒,刷新一次日志文件,但不一定刷新到磁盘上,而是取决于操作系统的调度(高效,但不安全)
sync_binlog 控制innoDBbinlog日志的刷新
控制每次写入binlog,是否都需要进行一次持久化
MariaDB提出改进,即使两个参数都是1也能做到合并效果,性能得到了大幅提升。 官方吸收了MariaDB的思想,并在此基础上进行了改进,性能再次得到了提升 Tips:官方在5.6以后才有这个优化;Percona和MariaDB版本的mysql5.5已经包含了这个优化
这里写图片描述
如果写入频繁导致redo log里对应的最老的数据脏页还没有刷新到磁盘,此时数据库将卡住,强制刷新脏页到磁盘 Mysql默认配置两个文件才10M,非常容易写满,生产环境中应适当调整大小
innoDB每次刷多少个脏页,决定InnoDB存储引擎的吞吐能力。 在SSD等高性能存储介质下,应该提高该参数以提高数据库的性能。
5.5同时支持update和delete的merge insert buffer只对二级索引且非唯一索引有效
这里写图片描述
mysql调优 对于正在运行的mysql,性能如何,参数设置的是否合理,账号设置的是否存在安全隐患,你是否了然于胸呢?