14.21.5.6 在基础 InnoDBtable 上执行 DML 和 DDL 语句

您可以通过标准 SQL 接口访问基础的InnoDBtable(默认情况下为test.demo_test)。但是,有一些限制:

  • 查询还通过 memcached 接口访问的 table 时,请记住, 可以将 memcached **操作配置为定期提交,而不是在每次写入操作之后提交。此行为由daemon_memcached_w_batch_size选项控制。如果此选项设置为大于1的值,请使用READ UNCOMMITTED查询来查找刚刚插入的行。
mysql> SET SESSSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

mysql> SELECT * FROM demo_test;
+------+------+------+------+-----------+------+------+------+------+------+------+
| cx | cy | c1 | cz | c2 | ca | CB | c3 | cu | c4 | C5 |
+------+------+------+------+-----------+------+------+------+------+------+------+
| NULL | NULL | a11 | NULL | 123456789 | NULL | NULL | 10 | NULL | 3 | NULL |
+------+------+------+------+-----------+------+------+------+------+------+------+
  • 当使用还可以通过 memcached 接口访问的 SQL 修改 table 时,可以配置 memcached 操作来定期启动新事务,而不是针对每个读取操作。此行为由daemon_memcached_r_batch_size选项控制。如果此选项设置为大于1的值,则使用 SQL 对 table 所做的更改将不会立即对 memcached **操作可见。

  • 对于事务中的所有操作,InnoDBtable 被锁定为 IS(意图共享)或 IX(意图除外)。如果您将daemon_memcached_r_batch_sizedaemon_memcached_w_batch_size从其默认值1实质上增加,则该 table 很可能在每个操作之间被锁定,从而阻止了该 table 上的DDL语句。