Hal*_*luk 3 mysql myisam insert
对于“并发插入”,MySQL参考手册有如下解释:
MyISAM 存储引擎支持并发插入,以减少给定表的读写器之间的争用:如果 MyISAM 表在数据文件中没有空洞(中间删除了行),则可以执行 INSERT 语句将行添加到最后SELECT 语句从表中读取行的同时。
http://dev.mysql.com/doc/refman/5.5/en/concurrent-inserts.html
假设我们的数据库“并发插入”参数设置为“自动”(1)。
我们有一个有间隙的 MyISAM 表。当我们插入新行并填补这些空白时,表是否“立即”准备好接受未来插入查询的“并发插入”?
或者我们是否需要在表知道没有间隙之前运行“优化”?
虽然您可以按照Rolando 的建议进行操作并设置concurrent_insert=2
为始终启用并发插入,但要回答有关填充漏洞的问题:
我们有一个有间隙的 MyISAM 表。当我们插入新行并填补这些空白时,表是否“立即”准备好接受未来插入查询的“并发插入”?
是的(强调我的):
如果有空洞,并发插入将被禁用,但在所有空洞都被新数据填充后会自动再次启用。[源代码]
免责声明:我还没有实际测试过。似乎除非您在孔中插入完全相同的数据长度,否则您仍然会在某处出现孔。
您可以查看这样的查询是否存在漏洞(data_free=0 表示没有漏洞):
SELECT table_name, data_free FROM information_schema.tables WHERE table_schema='FOO' AND engine='myisam'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8630 次 |
最近记录: |