ディスプレイ定義ID テーブルに定義された自動増分IDが上限に達した場合、次のIDを申請する際に得られる値は変更されません -- (2^32-1) = 4,294,967,295 -- BIGINT UNSIGNEDの使用をお勧めします テーブル t を作成します (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT=4294967295; t VALUES (null) に挿入します。 -- AUTO_INCREMENT は変更されていません mysql> SHOW CREATE TABLE t; +-------+------------------------------------------------------+ | テーブル | テーブルの作成 | +-------+------------------------------------------------------+ | t | テーブル `t` を作成する ( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4294967295 デフォルト CHARSET=utf8 | +-------+------------------------------------------------------+ mysql> t VALUES (null) に INSERT INTO します。 エラー 1062 (23000): キー 'PRIMARY' のエントリ '4294967295' が重複しています InnoDB 行ID 1. 作成された InnoDB テーブルで主キーが指定されていない場合、InnoDB は 6 バイトの長さの非表示の row_id を作成します。 2. InnoDB は、主キーのないすべての InnoDB テーブルに対してグローバル dict_sys.row_id 値を維持します。
3. コード実装では、row_idは8バイトのBIGINT UNSIGNEDです。
4. InnoDBでは、row_id=Nを適用した後、このデータ行をテーブルに書き込みます。
5. 自動増分主キーを作成することをお勧めします
XID 1. redologとbinlogを一緒に使用すると、トランザクションに対応する共通フィールドXIDが存在する。 2. ロジックを生成する
3. global_query_idは純粋なメモリ変数であり、再起動後にクリアされます。
4. global_query_idは8バイトで、上限は2^64-1です。
InnoDB の trx_id 1. XIDはサーバー層によって管理される 2. InnoDB は内部的に trx_id を使用して、InnoDB トランザクションをサーバー層に関連付けます。 3. InnoDBは内部的にグローバル変数max_trx_idを維持している
4. InnoDBデータ可視性の核となる考え方
5. 実行中のトランザクションについては、information_schema.innodb_trx を通じてトランザクションの trx_id を確認できます。 操作手順
-- T2 では、mysql> SELECT trx_id,trx_mysql_thread_id FROM innodb_trx; +-----------------+---------------------+ | trx_id | trx_mysql_thread_id | +-----------------+---------------------+ | 281479812572992 | 30 | +-----------------+---------------------+ -- T4 で、mysql> SELECT trx_id,trx_mysql_thread_id FROM innodb_trx; +-----------------+---------------------+ | trx_id | trx_mysql_thread_id | +-----------------+---------------------+ | 7417540 | 30 | +-----------------+---------------------+ mysql> プロセスリストを表示します。 +----+-----------------+-----------+--------------------+---------+------------------------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +----+-----------------+-----------+--------------------+---------+------------------------+------------------+ | 4 | event_scheduler | localhost | NULL | デーモン | 344051 | 空のキューを待機中 | NULL | | 30 | ルート | ローカルホスト | テスト | スリープ | 274 | | NULL | | 31 | root | localhost | information_schema | クエリ | 0 | 開始 | SHOW PROCESSLIST | +----+-----------------+-----------+--------------------+---------+------------------------+------------------+ 1. trx_mysql_thread_id=30 はスレッドID、つまりセッションAが配置されているスレッドです。 2. T1では、trx_idの値は実際には0であり、大きな値は表示用のみです(通常の読み取りおよび書き込みトランザクションとは異なります)。 3. T2 の時点では、trx_id は大きな数値になっています。これは、T1 の時点でセッション A に更新操作が含まれず、読み取り専用トランザクションであったためです。
4. セッションAがT3の時点でINSERT文を実行すると、InnoDBは実際にtrx_idを割り当てる。 読み取り専用トランザクション 1. 上記の時間T2で、大きなtrx_idがシステムによって一時的に計算されます。
2. 同じ読み取り専用トランザクションの実行中、そのポインタアドレスは変更されません。
3. 複数の並列読み取り専用トランザクションがある場合、各トランザクションのtrx変数のポインタアドレスは異なる必要があります。
4. 2^48 を追加する目的は、読み取り専用トランザクションによって表示される trx_id 値が比較的大きくなり、通常の読み取り/書き込みトランザクションを区別するために使用されるようにすることです。 5. trx_idのロジックはrow_idに似ており、長さは8バイトと定義されています。
6. 読み取り専用トランザクションにtrx_idを割り当てないことの利点
7. max_trx_id は永続的に保存され、再起動後も 0 にリセットされません。上限の 2^48-1 に達した後にのみ 0 にリセットされます。 スレッドID 1. SHOW PROCESSLISTの最初の列はthread_idです 2. システムは環境変数thread_id_counterを保存します。
3. thread_id_counterは4バイトとして定義されているため、2^32-1に達すると0にリセットされます。
する { 新しいID = スレッドIDカウンタ++; } while (!thread_ids.insert_unique(new_id).second); 参考文献 「MySQL実践45講義」 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
>>: JavaScript は自由に移動するウィンドウのマウス制御を実装します
データベースインデックスについては皆さんもよくご存知だと思います。 インデックスは、データベース テ...
目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...
MySql は、私たちが頻繁に使用するデータ ソースです。開発者が練習、小規模なプライベート ゲーム...
1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...
証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...
始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...
この記事では、JD.comのカルーセル効果の表示を実現するためのJavaScriptの具体的なコード...
いくつかのテーブルまたは単一のデータベースのみをバックアップする場合は、innobackup よりも...
MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...
以下のように表示されます。名前説明する文字可変(n)、varchar(n)長さ制限あり、可変長文字(...
デフォルトでは、ラベルとスパンの幅の設定は無効です。一般的に、表示属性は必須ですコードをコピーコード...
レンダリング下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください...
MySQL で判断文を書く方法:方法1. CASE関数case関数の構文: CASE条件 値1の場合...
コミットされていない読み取りの例の操作プロセス - コミットされていない読み取り1. 2 つの My...
HOCを紹介する一文高階コンポーネント (HOC) とは何ですか? 公式ドキュメントによると、「高階...