MySQL 5.7数据库参数优化

链接相关参数html

max_connections:容许客户端并发链接的最大数量,默认值是151,通常将该参数设置为500-2000mysql

max_connect_errors:若是客户端尝试链接的错误数量超过这个参数设置的值,则服务器再也不接受新的客户端链接。能够经过清空主机的缓存来解除服务器的这种阻止新链接的状态,经过FLUSH HOSTS或mysqladmin flush-hosts命令来清空缓存。这个参数的默认值是100,通常将该参数设置为100000。

interactive_timeout:Mysql关闭交互链接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400

wait_timeout:Mysql关闭非交互链接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400算法

max_allowed_packet = 4M
sql

接受的数据包大小;增长该变量的值十分安全,这是由于仅当须要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。该变量之因此取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而致使内存溢出。数据库

max_allowed_packet:网络传输时单个数据包的大小。默认值是4MB。包信息缓存的初始值是net_buffer_length指定的,可是包可能会增加到max_allowed_packet参数设置的值。若是要使用BLOB字段或长字符串,须要增长这个参数的值。这个参数的值须要设置成和最大的BLOB字段同样的大小。max_allowed_packet参数的协议限制是1GB。这个参数应该是1024整数倍。缓存

max_heap_table_size = 8M
定义了用户能够建立的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变安全

max_heap_table_size:这个参数设置用户建立的MEMORY表容许增加的最大容量,这个参数用来MEMORY表的MAX_ROWS值。设置这个参数对已有的MEMORY表没有影响,除非表重建或执行ALTER TABLE、TRUNCATE TABLE语句服务器

tmp_table_size = 16M
MySQL的heap(堆积)表缓冲大小。全部联合在一个DML指令内完成,而且大多数联合甚至能够不用临时表便可以完成。大多数临时表是基于内存的(HEAP)表。具备大的记录长度的临时表 (全部列的长度的和)或包含BLOB列的表存储在硬盘上。
若是某个内部heap(堆积)表大小超过tmp_table_size,MySQL能够根据须要自动将内存中的heap表改成基于硬盘的MyISAM表。还能够经过设置tmp_table_size选项来增长临时表的大小。也就是说,若是调高该值,MySQL同时将增长heap表的大小,可达到提升联接查询速度的效果。网络


skip-external-locking:当外部锁定(external-locking)起做用时,每一个进程若要访问数据表,则必须等待以前的进程完成操做并解除锁定。因为服务器访问数据表时常常须要等待解锁,所以在单服务器环境下external locking会让MySQL性能降低。因此在不少Linux发行版的源中,MySQL配置文件中默认使用了skip-external-locking来避免external locking。当使用了skip-external-locking后,为了使用MyISAMChk检查数据库或者修复、优化表,你必须保证在此过程当中MySQL服务器没有使用须要操做的表。若是没有中止服务器,也至少须要先运行
数据结构

若是是多服务器环境,但愿打开external locking特征,则注释掉这一行便可

# skip-external-locking    

若是是单服务器环境,则将其禁用便可,使用以下语句

skip-external-locking    

skip_name_resolve:若是这个参数设为OFF,则MySQL服务在检查客户端链接的时候会解析主机名;若是这个参数设为ON,则MySQL服务只会使用IP,在这种状况下,受权表中的Host字段必须是IP地址或localhost。这个参数默认是关闭的

back_log:MySQL服务器链接请求队列所能处理的最大链接请求数,若是队列放满了,后续的链接才会拒绝。当主要的MySQL线程在很短期内获取大量链接请求时,这个参数会生效。接下来,MySQL主线程会花费很短的时间去检查链接,而后开启新的线程。这个参数指定了MySQL的TCP/IP监听队列的大小。若是MySQL服务器在短期内有大量的链接,能够增长这个参数。
文件相关参数sync_binlog:控制二进制日志被同步到磁盘前二进制日志提交组的数量。当这个参数为0的时候,二进制日志不会被同步到磁盘;当这个参数设为0以上的数值时,就会有设置该数值的二进制提交组按期同步日志到磁盘。当这个参数设为1的时候,全部事务在提交前会被同步到二进制日志中,于是即便MySQL服务器发生意外重启,任何二进制日志中没有的事务只会处于准备状态,这会致使MySQL服务器自动恢复以回滚这些事务。这样就会保证二进制日志不会丢失事务,是最安全的选项;同时因为增长了磁盘写,这对性能有必定下降。将这个参数设为1以上的数值会提升数据库的性能,但同时会伴随数据丢失的风险。建议将该参数设为二、四、六、八、16。

expire_logs_days:二进制日志自动删掉的时间间隔。默认值为0,表明不会自动删除二进制日志。想手动删除二进制日志,能够执行 PURGE BINARY LOGS。

max_binlog_size:二进制日志文件的最大容量,当写入的二进制日志超过这个值的时候,会完成当前二进制的写入,向新的二进制日志写入日志。这个参数最小值时4096字节;最大值和默认值时1GB。相同事务中的语句都会写入同一个二进制日志,当一个事务很大时,二进制日志实际的大小会超过max_binlog_size参数设置的值。若是max_relay_log_size参数设为0,则max_relay_log_size参数会使用和max_binlog_size参数一样的大小。建议将此参数设为512M。

local_infile:是否容许客户端使用LOAD DATA INFILE语句。若是这个参数没有开启,客户端不能在LOAD DATA语句中使用LOCAL参数。

open_files_limit:操做系统容许MySQL服务打开的文件数量。这个参数实际的值以系统启动时设定的值、max_connections和table_open_cache为基础,使用下列的规则:

  1. 10 + max_connections + (table_open_cache * 2)

  2.  max_connections * 5

  3. MySQL启动时指定open_files_limit的值


缓存控制参数binlog_cache_size:在事务中二进制日志使用的缓存大小。若是MySQL服务器支持全部的存储引擎且启用二进制日志,每一个客户端都会被分配一个二进制日志缓存。若是数据库中有不少大的事务,增大这个缓存能够得到更好的性能。
Binlog_cache_use和Binlog_cache_disk_use这两个参数对于binlog_cache_size参数的优化颇有用。binlog_cache_size参数只设置事务所使用的缓存,非事务SQL语句所使用的缓存由binlog_stmt_cache_size系统参数控制。建议不要将这个参数设为超过64MB,以防止客户端链接多而影响MySQL服务的性能。

max_binlog_cache_size:若是一个事务须要的内存超过这个参数,服务器会报错"Multi-statement transaction required more than 'max_binlog_cache_size' bytes"。这个参数最大的推荐值是4GB,这是由于MySQL不能在二进制日志设为超过4GB的状况下正常的工做。建议将该参数设为binlog_cache_size*2。

binlog_stmt_cache_size:这个参数决定二进制日志处理非事务性语句的缓存。若是MySQL服务支持任何事务性的存储引擎且开启了二进制日志,每一个客户端链接都会被分配二进制日志事务和语句缓存。若是数据库中常常运行大的事务,增长这个缓存能够得到更好的性能。

table_open_cache:全部线程能打开的表的数量。
MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64。假定系统有200个并发链接,则需将此参数设置为200*N(N为每一个链接所需的文件描述符数目);当把table_open_cache设置为很大时,若是系统处理不了那么多文件描述符,那么就会出现客户端失效,链接不上。

thread_cache_size:MySQL服务缓存以重用的线程数。当客户端断开链接的时候,若是线程缓存没有使用满,则客户端的线程被放入缓存中。若是有客户端断开链接后再次链接到MySQL服务且线程在缓存中,则MySQL服务会优先使用缓存中的线程;若是线程缓存没有这些线程,则MySQL服务器会建立新的线程。若是数据库有不少的新链接,能够增长这个参数来提高性能。若是MySQL服务器每秒有上百个链接,能够增大thread_cache_size参数来使MySQL服务器使用缓存的线程。经过检查Connections和Threads_created状态参数,能够判断线程缓存是否足够。这个参数默认的值是由下面的公式来决定的:8 + (max_connections / 100)


建议将此参数设置为300~500。线程缓存的命中率计算公式为(1-thread_created/connections)*100%,能够经过这个公式来优化和调整thread_cache_size参数。
query_cache_size:为查询结果所分配的缓存。默认这个参数是没有开启的。这个参数的值应设为整数的1024倍,若是设为其余值则会被自动调整为接近此数值的1024倍。这个参数最小须要40KB。建议不要将此参数设为大于256MB,以避免占用太多的系统内存。

query_cache_min_res_unit:查询缓存所分配的最小块的大小。默认值是4096(4KB)。

query_cache_limit = 2M指定单个查询可以使用的缓冲区大小,默认1M

query_cache_type:设置查询缓存的类型。当这个参数为0或OFF时,则MySQL服务器不会启用查询缓存;当这个参数为1或ON时,则MySQL服务器会缓存全部查询结果(除了带有SELECT SQL_NO_CACHE的语句);当这个参数为2或DEMAND时,则MySQL服务器只会缓存带有SELECT SQL_CACHE的语句。

sort_buffer_size:每一个会话执行排序操做所分配的内存大小。想要增大max_sort_length参数,须要增大sort_buffer_size参数。若是在SHOW GLOBAL STATUS输出结果中看到每秒输出的Sort_merge_passes状态参数很大,能够考虑增大sort_buffer_size这个值来提升ORDER BY 和 GROUP BY的处理速度。建议设置为1~4MB。当个别会话须要执行大的排序操做时,在会话级别增大这个参数。

read_buffer_size:为每一个线程对MyISAm表执行顺序读所分配的内存。若是数据库有不少顺序读,能够增长这个参数,默认值是131072字节。这个参数的值须要是4KB的整数倍。这个参数也用在下面场景中:

  • 当执行ORDER BY操做时,缓存索引到临时文件(不是临时表)中;

  • 执行批量插入到分区表中;

  • 缓存嵌套查询的执行结果。


read_rnd_buffer_size:这个参数用在MyISAM表和任何存储引擎表随机读所使用的内存。当从MyISAM表中以键排序读取数据的时候,扫描的行将使用这个缓存以免磁盘的扫描。将这个值设到一个较大的值能够显著提高ORDER BY的性能。而后,这个参数会应用到全部的客户端链接,全部不该该将这个参数在全局级别设为一个较大的值;在运行大查询的会话中,在会话级别增大这个参数便可。

join_buffer_size:MySQL服务器用来做普通索引扫描、范围索引扫描和不使用索引而执行全表扫描这些操做所用的缓存大小。一般,获取最快链接的方法是增长索引。当不能增长索引的时候,使全链接变快的方法是增大join_buffer_size参数。对于执行全链接的两张表,每张表都被分配一块链接内存。对于没有使用索引的多表复杂链接,须要多块链接内存。一般来讲,能够将此参数在全局上设置一个较小的值,而在须要执行大链接的会话中在会话级别进行设置。默认值是256KB。

net_buffer_length:每一个客户端线程和链接缓存和结果缓存交互,每一个缓存最初都被分配大小为net_buffer_length的容量,并动态增加,直至达到max_allowed_packet参数的大小。当每条SQL语句执行完毕后,结果缓存会缩小到net_buffer_length大小。不建议更改这个参数,除非你的系统有不多的内存,能够调整这个参数。若是语句须要的内存超过了这个参数的大小,则链接缓存会自动增大。net_buffer_length参数最大能够设置到1MB。不能在会话级别设置这个参数。
thread_cache_size = 8
# 这个值(默认8)表示能够从新利用保存在缓存中线程的数量,当断开链接时若是缓存中还有空间,那么客户端的线程将被放到缓存中,
# 若是线程从新被请求,那么请求将从缓存中读取,若是缓存中是空的或者是新的请求,那么这个线程将被从新建立,若是有不少新的线程,
# 增长这个值能够改善系统性能.经过比较Connections和Threads_created状态的变量,能够看到这个变量的做用。(–>表示要调整的值)
# 根据物理内存设置规则以下:
# 1G  —> 8
# 2G  —> 16
# 3G  —> 32
# 大于3G  —> 64


bulk_insert_buffer_size:MyISAM表使用一种特殊的树状缓存来提升批量插入的速度,如INSERT ... SELECT,INSERT ... VALUES (...),(...), ...,对空表执行执行LOAD DATA INFILE。这个参数每一个线程的树状缓存大小。将这个参数设为0会关闭这个参数。这个参数的默认值是8MB。


这个参数也和tmp_table_size参数一块儿来如今内部in-memory表的大小。若是内存表使用频繁,能够增大这个参数的值。

tmp_table_size:内部内存临时表的最大内存。这个参数不会应用到用户建立的MEMORY表。若是内存临时表的大小超过了这个参数的值,则MySQL会自动将超出的部分转化为磁盘上的临时表。在MySQL 5.7.5版本,internal_tmp_disk_storage_engine存储引擎将做为磁盘临时表的默认引擎。在MySQL 5.7.5以前的版本,会使用MyISAM存储引擎。若是有不少的GROUP BY查询且系统内存充裕,能够考虑增大这个参数。

innodb_buffer_pool_dump_at_shutdown:指定在MySQL服务关闭时,是否记录InnoDB缓存池中的缓存页,以缩短下次重启时的预热过程。一般和innodb_buffer_pool_load_at_startup参数搭配使用。innodb_buffer_pool_dump_pct参数定义了保留的最近使用缓存页的百分比。

innodb_buffer_pool_dump_now:马上记录InnoDB缓冲池中的缓存页。一般和innodb_buffer_pool_load_now搭配使用。

innodb_buffer_pool_load_at_startup:指定MySQL服务在启动时,InnoDB缓冲池经过加载以前的缓存页数据来自动预热。一般和innodb_buffer_pool_dump_at_shutdown参数搭配使用。

innodb_buffer_pool_load_now:马上经过加载数据页来预热InnoDB缓冲池,无需重启数据库服务。能够用来在性能测试时,将缓存改为到一个已知的状态;或在数据库运行报表查询或维护后,将数据库改为到一个正常的状态。
MyISAM参数key_buffer_size:全部线程所共有的MyISAM表索引缓存,这块缓存被索引块使用。增大这个参数能够增长索引的读写性能,在主要使用MyISAM存储引擎的系统中,可设置这个参数为机器总内存的25%。若是将这个参数设置很大,好比设为机器总内存的50%以上,机器会开始page且变得异常缓慢。能够经过SHOW STATUS 语句查看 Key_read_requests,Key_reads,Key_write_requests, and Key_writes这些状态值。正常状况下Key_reads/Key_read_requests 比率应该小于0.01。数据库更新和删除操做频繁的时候,Key_writes/Key_write_requests 比率应该接近1。
key_buffer_size = 4M
#指定用于索引的缓冲区大小,增长它可获得更好处理的索引(对全部读和多重写),到你能负担得起那样多。若是你使它太大,
# 系统将开始换页而且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。经过检查状态值Key_read_requests和Key_reads,
# 能够知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽量的低,
# 至少是1:100,1:1000更好(上述状态值可使用SHOW STATUS LIKE 'key_read%'得到)。注意:该参数值设置的过大反而会是服务器总体效率下降

key_cache_block_size:key缓存的块大小,默认值是1024字节。

myisam_sort_buffer_size:在REPAIR TABLE、CREATE INDEX 或 ALTER TABLE操做中,MyISAM索引排序使用的缓存大小。

myisam_max_sort_file_size:当重建MyISAM索引的时候,例如执行REPAIR TABLE、 ALTER TABLE、 或 LOAD DATA INFILE命令,MySQL容许使用的临时文件的最大容量。若是MyISAM索引文件超过了这个值且磁盘还有充裕的空间,增大这个参数有助于提升性能。

myisam_repair_threads:若是这个参数的值大于1,则MyISAM表在执行Repair操做的排序过程当中,在建立索引的时候会启用并行,默认值为1。
InnoDB参数innodb_buffer_pool_size:InnDB存储引擎缓存表和索引数据所使用的内存大小。默认值是128MB。在以InnDB存储引擎为主的系统中,能够将这个参数设为机器物理内存的80%。同时须要注意:

  • 设置较大物理内存时是否会引擎页的交换而致使性能降低;

  • InnoDB存储引擎会为缓存和控制表结构信息使用部份内存,于是实际花费的内存会比设置的值大于10%;

  • 这个参数设置的越大,初始化内存池的时间越长。在MySQL 5.7.5版本,能够以chunk为单位增长或减小内存池的大小。chunk的大小能够经过innodb_buffer_pool_chunk_size参数设定,默认值是128MB。内存池的大小能够等于或是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的整数倍。


innodb_buffer_pool_instances:InnoDB缓存池被分红的区域数。对于1GB以上大的InnoDB缓存,将缓存分红多个部分能够提升MySQL服务的并发性,减小不一样线程读缓存页的读写竞争。每一个缓存池有它单独的空闲列表、刷新列表、LRU列表和其余链接到内存池的数据结构,它们被mutex锁保护。这个参数只有将innodb_buffer_pool_size参数设为1GB或以上时才生效。建议将每一个分红的内存区域设为1GB大小。

innodb_max_dirty_pages_pct:当Innodb缓存池中脏页所占的百分比达到这个参数的值时,InnoDB会从缓存中向磁盘写入数据。默认值是75。
innodb_thread_concurrency:InnoDB存储引擎能够并发使用的最大线程数。当InnoDB使用的线程超过这参数的值时,后面的线程会进入等待状态,以先进先出的算法来处理。等待锁的线程不计入这个参数的值。这个参数的范围是0~1000。默认值是0。当这个参数为0时,表明InnoDB线程的并发数没有限制,这样会致使MySQL建立它所须要的尽量多的线程。设置这个参数能够参考下面规则:

  • 若是用户线程的并发数小于64,能够将这个参数设为0;

  • 若是系统并发很严重,能够先将这个参数设为128,而后再逐渐将这个参数减少到96, 80, 64或其余数值,直到找到性能较好的一个数值。


innodb_flush_method:指定刷新数据到InnoDB数据文件和日志文件的方法,刷新方法会对I/O有影响。若是这个参数的值为空,在类Unix系统上,这个参数的默认值为fsync;在Windows系统上,这个参数的默认值为async_unbuffered。在类Unix系统上,这个参数可设置的值以下:

  • fsync:InnoDB使用fsync()系统函数来刷新数据和日志文件,fsync是默认参数。

  • O_DSYNC:InnoDB使用O_SYNC函数来打开和刷新日志文件,使用fsync()函数刷新数据文件

  • littlesync:这个选项用在内部性能的测试,目前MySQL尚不支持,使用这个参数又必定的风险

  • nosync:这个选项用在内部性能的测试,目前MySQL尚不支持,使用这个参数又必定的风险

  • O_DIRECT:InnoDB使用O_DIRECT(或者directio()在Solaris)函数打开数据文件,使用fsync()刷新数据文件和日志文件

  • O_DIRECT_NO_FSYNC:在刷新I/O时,InnoDB使用O_DIRECT方式。


在有RAID卡和写缓存的系统中,O_DIRECT有助于避免InnoDB缓存池和操做系统缓存之间的双重缓存。在InnoDB数据和日志文件放在SAN存储上面的系统,默认值或O_DSYNC方法会对以读为主的数据库起到加速做用。
innodb_data_home_dir:InnoDB系统表空间所使用的数据文件的物理路径,默认路径是MySQL数据文件路径。若是这个参数的值为空,能够在innodb_data_file_path参数里使用绝对路径

innodb_data_file_path:InnoDB数据文件的路径和大小。

innodb_file_per_table:当这个参数启用的时候,InnoDB会将新建表的数据和索引单独存放在.ibd格式的文件中,而不是存放在系统表空间中。当这张表被删除或TRUNCATE时,InnoDB表所占用的存储会被释放。这个设定会开启InnoDB的一些其余特性,好比表的压缩。当这个参数关闭的时候,InnoDB会将表和索引的数据存放到系统表空间的ibdata文件中,这会有一个问题,由于系统表空间不会缩小,这样设置会致使空间没法回放。

innodb_undo_directory:InnoDB undo日志所在表空间的物理路径。和innodb_undo_logs、innodb_undo_tablespaces参数配合,来设置undo日志的路径,默认路径是数据文件路径。

innodb_undo_logs:指定InnoDB使用的undo日志的个数。在MySQL 5.7.2版本,32个undo日志被临时表预留使用,而且这些日志存放在临时表表空间(ibtmp1)中。若是undo日志只存放在系统表空间中,想要额外分配供数据修改事务用的undo日志,innodb_undo_logs参数必须设置为32以上的整数。若是你配置了单独的undo表空间,要将innodb_undo_logs参数设为33以上来分配额外供数据修改事务使用的undo日志。每一个undo日志最多能够支持1024个事务。若是这个参数没有设置,则它会设为默认值128。

innodb_undo_tablespaces:undo日志的表空间文件数量。默认,全部的undo日志都是系统表空间的一部分。由于在运行大的事务时,undo日志会增大,将undo日志设置在多个表空间中能够减小一个表空间的大小。undo表空间文件建立在innodb_undo_directory参数指定的路径下,以undoN格式命名,N是以0开头的一系列整数。undo表空间的默认大小为10M。须要在初始化InnoDB前设置innodb_undo_tablespaces这个参数。在MySQL 5.7.2版本,在128个undo日志中,有32个undo日志是为临时表所预留的,有95个undo日志供undo表空间使用。

innodb_log_files_in_group:InnoDB日志组包含的日志个数。InnoDB以循环的方式写入日志。这个参数的默认值和推荐值均是2。日志的路径由innodb_log_group_home_dir参数设定。

innodb_log_group_home_dir:InnoDB重作日志文件的物理路径,重作日志的数量由innodb_log_files_in_group参数指定。若是不指定任何InnoDB日志参数,MySQL默认会在MySQL数据文件路径下面建立两个名为ib_logfile0、ib_logfile1的两个重作日志文件,它们的大小由innodb_log_file_size参数设定。

innodb_log_file_size:日志组中每一个日志文件的字节大小。全部日志文件的大小(innodb_log_file_size * innodb_log_files_in_group)不能超过512GB。

innodb_log_buffer_size:InnoDB写入磁盘日志文件所使用的缓存字节大小。若是innodb_page_size参数为32K,则默认值是8MB;若是innodb_page_size参数为64K,则默认值是16MB。若是日志的缓存设置较大,则MySQL在处理大事务时,在提交事务前无需向磁盘写入日志文件。建议设置此参数为4~8MB。

innodb_flush_log_at_trx_commit:当提交相关的I/O操做被批量从新排列时,这个参数控制提交操做的ACID一致性和高性能之间的平衡。能够改变这个参数的默认值来提高数据库的性能,可是在数据库宕机的时候会丢失少许的事务。这个参数的默认值为1,表明数据库遵守完整的ACID模型,每当事务提交时,InnoDB日志缓存中的内容均会被刷新到日志文件,并写入到磁盘。当这个参数为0时,InnDB日志缓存大概每秒刷新一第二天志文件到磁盘。当事务提交时,日志缓存不会马上写入日志文件,这样的机制不会100%保证每秒都向日志文件刷新日志,当mysqld进程宕掉的时候可能会丢失持续时间为1秒左右的事务数据。当这个参数为2时,当事务提交后,InnoDB日志缓存中的内容会写入到日志文件且日志文件,日志文件以大概每秒一次的频率刷新到磁盘。在MySQL 5.6.6版本,InnoDB日志刷新频率由innodb_flush_log_at_timeout参数决定。一般将个参数设为1。

innodb_flush_log_at_timeout:写入或刷新日志的时间间隔。这个参数是在MySQL 5.6.6版本引入的。在MySQL 5.6.6版本以前,刷新的频率是每秒刷新一次。innodb_flush_log_at_timeout参数的默认值也是1秒刷新一次。

innodb_lock_wait_timeout:InnDB事务等待行锁的时间长度。默认值是50秒。当一个事务锁定了一行,这时另一个事务想访问并修改这一行,当等待时间达到innodb_lock_wait_timeout参数设置的值时,MySQL会报错"ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction",同时会回滚语句(不是回滚整个事务)。若是想回滚整个事务,须要使用--innodb_rollback_on_timeout参数启动MySQL。在高交互性的应用系统或OLTP系统上,能够减少这个参数来快速显示用户的反馈或把更新放入队列稍后处理。在数据仓库中,为了更好的处理运行时间长的操做,能够增大这个参数。这个参数只应用在InnoDB行锁上,这个参数对表级锁无效。这个参数不适用于死锁,由于发生死锁时,InnoDB会马上检测到死锁并将发生死锁的一个事务回退。

innodb_fast_shutdown:InnoDB关库模式。若是这个参数为0,InnoDB会作一个缓慢关机,在关机前会作完整的刷新操做,这个级别的关库操做会持续数分钟,当缓存中的数据量很大时,甚至会持续几个小时;若是数据库要执行版本升级或降级,须要执行这个级别的关库操做,以保证全部的数据变动都写入到数据文件。若是这个参数的值是1(默认值),为了节省关库时间,InnoDB会跳过新操做,而是在下一次开机的时候经过crash recovery方式执行刷新操做。若是这个参数的值是2,InnoDB会刷新日志并以冷方式关库,就像MySQL宕机同样,没有提交的事务会丢失,在下一次开启数据库时,crash recovery所须要的时间更长;在紧急或排错情形下,须要马上关闭数据库时,会使用这种方式停库。

本文出自http://www.cnblogs.com/erisen/p/6068265.html

相关文章
相关标签/搜索