MySQL延迟更新索引(delay_key_write)
2016-03-12 11:19
615 查看
MySQL延迟更新索引(Delayed Key Write):
使用表创建选项DELAY_KEY_WRITE创建的myisam表,在查询结束后,不会将索引的改变数据写入磁盘,而是在内存的健缓冲区(In-memory key buffer)中缓存索引改变数据。它只会在清理缓存区,或关闭表时,才将索引块转储到磁盘。对于数据经常改变,并且使用频繁的表,这种模式大大提高了表的处理性能。
不过,如果在服务器或系统奔溃,索引将肯定损坏,并需要修复。用户可以使用脚本,如运行myisamchk工具,在重启服务器前进行修复,也可以使用自动修复(Automatic Recovery)选项进行修复(即使没有选用DELAY_KEY_WRITE选项,这些修复上的安全措施也是很有价值的)。延迟更新索引特性可以被全局配置,也可以为个别表单独配置。
MySQL数据库参数DELAY_KEY_WRITE:
DELAY_KEY_WRITE是指在表关闭之前,将对表的update操作只更新数据到磁盘,而不更新索引到磁盘,把对索引的更改记录在内存。(这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行)
这样MyISAM表可以使索引更新更快。在关闭表的时候一起更新索引到磁盘。
使用:1:create table的时候,指定DELAY_KEY_WRITE。
2: 当表已经存在的时候:ALTER TABLE table_name DELAY_KEY_WRITE= 1。
场景:表有update操作,duang duang的体现出优势了。因为这个参数能延迟更新索引到表关闭。经常更新一个大表的时候,可以用这个参数
小提示:当DELAY_KEY_WRITE使用的时候,如果出现重启或者掉电啥的情况,会导致在cache的索引update没来得及更新,所以必须在启动参数加上 --myisam-recover,这样在你启动mysql的时候会检查你的表并同步表和索引.或者在重启服务器之前运行myisamchk。使用该特性,应用--myisam-recover选项启动服务器,为所有MyISAM表添加自动检查。
使用表创建选项DELAY_KEY_WRITE创建的myisam表,在查询结束后,不会将索引的改变数据写入磁盘,而是在内存的健缓冲区(In-memory key buffer)中缓存索引改变数据。它只会在清理缓存区,或关闭表时,才将索引块转储到磁盘。对于数据经常改变,并且使用频繁的表,这种模式大大提高了表的处理性能。
不过,如果在服务器或系统奔溃,索引将肯定损坏,并需要修复。用户可以使用脚本,如运行myisamchk工具,在重启服务器前进行修复,也可以使用自动修复(Automatic Recovery)选项进行修复(即使没有选用DELAY_KEY_WRITE选项,这些修复上的安全措施也是很有价值的)。延迟更新索引特性可以被全局配置,也可以为个别表单独配置。
MySQL数据库参数DELAY_KEY_WRITE:
DELAY_KEY_WRITE是指在表关闭之前,将对表的update操作只更新数据到磁盘,而不更新索引到磁盘,把对索引的更改记录在内存。(这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行)
这样MyISAM表可以使索引更新更快。在关闭表的时候一起更新索引到磁盘。
使用:1:create table的时候,指定DELAY_KEY_WRITE。
2: 当表已经存在的时候:ALTER TABLE table_name DELAY_KEY_WRITE= 1。
场景:表有update操作,duang duang的体现出优势了。因为这个参数能延迟更新索引到表关闭。经常更新一个大表的时候,可以用这个参数
小提示:当DELAY_KEY_WRITE使用的时候,如果出现重启或者掉电啥的情况,会导致在cache的索引update没来得及更新,所以必须在启动参数加上 --myisam-recover,这样在你启动mysql的时候会检查你的表并同步表和索引.或者在重启服务器之前运行myisamchk。使用该特性,应用--myisam-recover选项启动服务器,为所有MyISAM表添加自动检查。
相关文章推荐
- MySQL时间函数
- MySQL索引类型一览 让MySQL高效运行起来
- mysql 索引类型详解-B-Tree索引
- MySQL的mysql_insert_id和LAST_INSERT_ID(转)
- mysql主主互备模式配置!!!
- MySQL索引类型总结和使用技巧以及注意事项
- mysql互换表中两列数据方法
- Mysql命令-求一列字段的总和
- mysql-5.7.11-winx64中mysql.exe双击无法看到进程,CMD下3534错误,无法启动的解决方法
- mysql-5.7.11-winx64中mysql.exe双击无法看到进程,CMD下3534错误,无法启动的解决方法
- Mysql 5.7免安装版配置 win10
- cmd mysql导入数据库报错Unkonwn command ‘\''’ 或 Unkonwn command ‘\n''’
- Ubuntu 安装mysql和简单操作
- 阿里云 mysql的远程访问问题
- mysql root密码
- 在Ubuntu上源码安装MySQL+安装问题解决+安全优化
- 在Ubuntu上部署开源博客系统Blog_mini
- 在Ubuntu上使用apt-get安装MySQL+安全优化
- mysql,免安装,1067错误
- mysql安装设置密码