MYSQL优化(2)

摘要:
sync_ Binlog=n。在每n个事务提交后,MySQL都会执行一个磁盘同步命令,例如fsync,以绑定binlog_缓存中的数据被强制写入磁盘。LogBuffer的主要功能是缓冲日志数据,提高日志写入的IO性能。在此模式下,提交事务时,不会自动触发磁盘写入操作。当MySQL崩溃时,数据可能会丢失,这是最快但不安全的1:每次提交事务时,MySQL都会将logbuffer数据写入日志文件并刷新它。此模式是系统默认模式。在这种模式下,MySQL将每秒执行一次刷新操作。

Innodb引擎

1.innodb_buffer_pool_size  这个参数主要作用是缓存innodb表的索引,表数据,插入数据时的缓冲,可用内存70~80%比较合理.   show status like  'Innodb_buffer_pool_%';

2.nnodb_purge_batch_size  表示一次清除多少个undolog page

3.innodb_purge_thread  清除undolog的线程数,超过1个时不起效

4.innodb_read_io_threads  InnoDB 使用后台线程处理数据页上写 I/O(输入)请求的数量;

5.innodb_write_io_threads  InnoDB 使用后台线程处理数据页上读 I/O(输出)请求的数量。

6.sync_binlog   sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

7.innodb_log_file_size   用来设置 Innodb 的 Log Buffer 大小的,系统默认值为 1MB。Log  Buffer 的主要作用就是缓冲 Log 数据,提高写 Log 的 IO 性能。一般来说,如果你的系统不是写负载非常高且以 大事务居多的话,8MB 以内的大小就完全足够了。

8.innodb_io_capacity  参数可以调整刷新脏页的数量,会根据innodb_io_capacity来判断更新的速度能不能在可控的范围内.如果innodb_io_capacity设置过大,则会造成MySQL高估了磁盘的能力,导致脏页堆积,就会出现本文所说的问题.如果设置过低,则会出MySQL低估了磁盘的能力,使得数据库能够单位时间内提交的事务数(tps)降低,比较低级的磁盘,根据MySQL 官方的建议,应该将innodb_io_capacity降低到100.

9.innodb_max_dirty_pages_pct    控制了 Dirty Page 在 Buffer Pool 中所占的比率,超过就flush到硬盘;

10.innodb_flush_log_at_trx_commit   

  0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作,mysql崩溃时可能会丢失数据,最快但是不安全.

  1:每次事务提交时mysql都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。

  2:每次事务提交时mysql都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。一般当操作系统崩溃时才可能会丢失1-2秒的数据,速度介于 0和1之间.

11.innodb_flush_method   控制着innodb数据文件及redo log的打开、刷写模式

  0:fdatasync, innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件 

  1:O_DIRECT,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log

  2:O_DSYNC,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件

  

    ps:   fsync: 该函数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘,并且flush完元数据信息(比如修改日期、创建日期等)才算flush成功。

       O_SYNC方式打开redo文件表示当write日志时,数据都write到磁盘,并且元数据也需要更新

      

MYSQL优化(2)第1张

    

免责声明:文章转载自《MYSQL优化(2)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇gradle初体验vlan报文处理概述下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu下apache2-php-mysql的环境配置

基本的支持环境。暂时还不应用zend优化,因此这里就不涉及到zend optimizer的安装了。其实在ubuntu系统中中安装远比在windows系统中设置更为容易,而且在终端下设置更省事。 1、安装Apache服务 sudo apt-get install apache2 然后按照提示即完成apahce的安装了。这里 可以打开 http://127...

mysq优化三之buffer pool

sql语句执行流程   不管是select还是update,都是要查询把页取出来放在内存中,mysql中有一个单独的区域用来存放页,这就是buffer pool innodb architecture  mysql启动的时候,会在内存中开辟一个128M的空间,这个空间就是buffer pool  当再取一个页放在buffer pool中的什么位置呢...

MySQL【Delete误操作】回滚

前言:      操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和binlog差来恢复,等不了,很费时。这里先说明下因为Delete 操作的恢复方法:主要还是通过binlog来进行恢复,前提是binlog_format必须是Row格式,否则只能通过备份来恢复数据了。方法:     条件:开启Binlog,...

MySQL 字符集与比较规则

参考:《MySQL是怎样运行的》,小孩子 字符集 # 查看字符集 show (character set|charset) [like 匹配的模式]; # utf8(utf8mb3) 与 utf8mb4 有什么不同? utf8(utf8mb3):用 1-3 字节表示一个字符 utf8mb4:用 1-4 字节表示一个字符,支持 emoji 表情哦...

Linux设置禁止用户登陆

Linux设置禁止用户登陆 vim /etc/shadow 第二栏(密码栏)设为*,会丢失密码 usermod -L username # -L Lock; -U Unlock chsh username -s /sbin/nologin 或直接改文件vim /etc/passwd修改mysql:mysql❌501:501::/mnt/mysql:/sb...

mysql如何设置两个默认时间列

timestamp设置默认值是Default CURRENT_TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP 但是由于 一个表中至多只能有一个字段设置CURRENT_TIMESTAMP 两行设置DEFAULT CURRENT_TIMESTAMP是不行的。 还有一点要注意 1 2 3...