ディスプレイ定義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 は自由に移動するウィンドウのマウス制御を実装します
シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...
このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 12.19....
序文この記事では主に、curl を介してフォーム送信ログインを実装する方法について説明します。単一の...
この記事では、マーキースタイルのテキストの水平スクロールを実現するためのVueの具体的なコードを参考...
PostgreSQL正規表現の一般的な機能の概要正規表現は、複雑なデータ処理を必要とするプログラムに...
Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...
これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...
変換して翻訳するTransform は、変換と変形を意味します。他の幅属性や高さ属性と同様に、CSS...
この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...
1 / Webプロジェクトファイルをwebappsディレクトリに直接コピーするこれは最も一般的に使...
これは、Web ページを Windows のスタート メニューなどのデスクトップ プログラムのように...
フロントエンド開発では、スクロールバーを非表示にしながらスクロールをサポートしなければならないという...
Tomcat8 イメージをダウンロード [root@localhost ~]# docker sea...
公式ウェブサイトアドレス: https://www.mysql.com/インストールの提案: インス...
1. 現象早朝、オンライン テーブルにインデックスが追加されました。テーブル内のデータ量が大きすぎた...