在基础InnoDB表上执行DML和DDL语句
您可以通过标准SQL接口访问基础InnoDB
表(test.demo_test
默认情况下)。但是,有一些限制:
查询还通过memcached接口访问的表时,请记住,可以将memcached操作配置为定期提交,而不是在每次写入操作之后提交。此行为由
daemon_memcached_w_batch_size
选项控制。如果此选项的值大于1
,请使用READ UNCOMMITTED
查询查找刚刚插入的行。mysql>
SET SESSSIONTRANSACTION 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修改表时,可以将memcached操作配置为定期启动新事务,而不是针对每个读取操作。此行为由
daemon_memcached_r_batch_size
选项控制。如果此选项的值设置为大于1
,则使用SQL对表所做的更改将不会立即显示给memcached操作。 - 对于
InnoDB
事务中的所有操作,该表被锁定为IS(意图共享)或IX(意图除外)。如果增加daemon_memcached_r_batch_size
并daemon_memcached_w_batch_size
从它们的默认值显着1
,该表是最有可能的每个操作之间的锁定,防止 DDL语句在表。