ディスプレイ定義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つ、 G:\MySQL\MySQL Server 5.7\bin> mysqld --ini...
今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...
Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...
1. 位置情報の利用状況の概要ロケーションは、さまざまな処理方法に対してさまざまな種類のリクエストを...
日々の開発で遭遇した様々な問題と、その解決策を閲覧しながら、日々の開発でよく使用するスキルや知識ポイ...
1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...
序文:以前の記事では、特定のパラメータの機能についてよく紹介してきました。しかし、MySQL パラメ...
目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...
目次1. V8ソース2. V8サービスターゲット3. V8の初期アーキテクチャIV. V8の初期アー...
1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...
目次メモを使うコールバックの使用メモを使う親コンポーネントが再レンダリングされると、そのすべての要素...
この記事では、ドラッグプログレスバーを実現するためのVueの具体的なコードを例として紹介します。具体...
インデックス作成は大学図書館の書誌インデックスの構築に似ており、データ検索の効率を向上させ、データベ...
MySQL で判断文を書く方法:方法1. CASE関数case関数の構文: CASE条件 値1の場合...
html 、アドレス、引用、本文、 dd 、 div 、 dl 、 dt 、フィールドセット、フォ...