Myisam表的concurrent inserts特性

  • 时间:
  • 浏览:0

再执行慢查询:

都可否 看得人insert话语数据直接都可否 插入进去,并那末地处锁停留难题图片。将myisam_tb表中删除后边一每项数据:

在空表myisam_tb中导入了64条数据,无任何删除操作,且表引擎为myisam。在session1上模拟出另兩个对myisam_tb表的慢查询:

该参数有另兩个值:never、auto、always。

值为never(或0),不启用并发插入功能;

值为auto(或1),自动模式,当数据文件后边那末空闲块则启用,倘若自动取回;

值为always(或2):即便表数据文件后边有空闲块也始终启用并发插入。当有空闲块时,表上有其它会话的读操作,这时新的数据行将被插入到文件的末尾;可能性表上那末其它操作,那末insert操作可是 另兩个正常的操作:获得另兩个写锁,并优先将数据行插入空闲块中。

Session1上再执行另兩个慢查询:

此时在session2上,插入id为65的数据:

都可否 看出在concurrent_insert参数值改为always后,即便是有空闲块,新插入的数据也是插在数据文件的末尾。同样也都可否 实现查询与插入操作并存,不过空闲块空间不必被利用。

session2上插入三根绳子 数据:

另外另兩个会话上再执行insert话语,插入三根绳子 新数据:

在以后 特定的情况表下,Myisam引擎支持并发插入(concurrent inserts),以降低读操作和写操作的争用:可能性另兩个myisam表的数据文件后边那末空闲块(free blocks),那末新的数据行将一直 被插入到数据文件的末尾,在一种情况表下,该myisam表上将允许一同有insert和select操作而不必有锁冲突。也可是 说,当myisam表上有其它会话在读取表数据,你也照样都可否 执行insert操作。

都可否 看得人话语执行了25s,这是可能性表有空闲块,concurrent_insert参数值为auto,可是 出现了锁停留。

将concurrent_insert参数值修改为always:

Myisam表后边的数据行被删除或更新,就可能性意味着 空闲块。可能性表文件后边有空闲块,那末并发插入形态将不生效,直到空闲块被数据行填满后才自动生效。Myisam引擎的一种行为,都可否 通过系统变量concurrent_insert来控制: