基礎となる InnoDB
テーブル (デフォルトでは test.demo_test
) には、標準 SQL インタフェースを介してアクセスできます。 ただし、いくつかの制約があります。
-
memcached インタフェースを介してもアクセスされるテーブルをクエリーする場合は、すべての書込み操作の後ではなく、定期的にコミットされるように 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 を使用してテーブルを変更する場合、読取り操作ごとではなく、新しいトランザクションを定期的に開始するように memcached 操作を構成できます。 この動作は、
daemon_memcached_r_batch_size
オプションによって制御されます。 このオプションが1
より大きい値に設定されている場合、SQL を使用してテーブルに加えられた変更は、memcached 操作ですぐには表示されません。InnoDB
テーブルは、IS (インテント共有) または IX (インテント排他) のいずれかで、トランザクション内のすべての操作に対してロックされています。daemon_memcached_r_batch_size
およびdaemon_memcached_w_batch_size
を1
のデフォルト値から大幅に増やすと、各操作間でテーブルがロックされる可能性が高くなり、テーブルに対する DDL ステートメントが防止されます。