MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  ベースとなる InnoDB テーブルでの DML および DDL ステートメントの実行

15.20.6.6 ベースとなる InnoDB テーブルでの DML および DDL ステートメントの実行

基礎となる 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_size1 のデフォルト値から大幅に増やすと、各操作間でテーブルがロックされる可能性が高くなり、テーブルに対する DDL ステートメントが防止されます。


関連キーワード:  InnoDB, テーブル, 構成, ロック, 圧縮, スペース, 操作, インデックス, INFORMATION, SCHEMA