MySQL のマルチバージョン同時実行制御 この記事では、多くの非表示列のうち、行識別子
簡単に言えば、テーブルに主キーまたは空でない一意のインデックスがあり、それが 1 つの整数列のみで構成されている場合は、 ドキュメントに記載されているキーワード(主キー、一意のインデックス、空でない、単一の列、数値型)に特に注意してください。次に、これらの観点から始めて、謎の隠しフィールド 1. 主キーが存在するまず、主キーが設定されていて数値型である場合を見てみましょう。次のステートメントを使用してテーブルを作成します。 テーブル `table1` を作成します ( `id` bigint(20) NOT NULL 主キー、 `name` varchar(32) デフォルト NULL )ENGINE=InnoDB; 3 つのテスト データを挿入した後、次のクエリ ステートメントを実行し、 テーブル1から*,_rowidを選択 実行結果を確認すると、 主キーが設定され、主キー フィールドが数値型の場合、 前述の文書内のいくつかのキーワードを確認し、個別に分析してみましょう。主キーは非 NULL フィールドである必要があるため、主キーが非数値フィールドである場合を見てみましょう。テーブルは次のように作成されます。 テーブル `table2` を作成します ( `id` varchar(20) NOT NULL 主キー、 `name` varchar(32) デフォルト NULL )ENGINE=InnoDB; 上記と同じクエリを 2. 主キーはないが、一意のインデックスが存在する上記の 2 種類の主キーをテストした後、テーブルに主キーが存在しないが、一意のインデックスが存在する状況を見てみましょう。まず、空でない一意のインデックスが数値フィールドに追加される場合をテストし、次のようにテーブルを作成します。 テーブル `table3` を作成します ( `id` bigint(20) NOT NULL ユニークキー、 `名前` varchar(32) )ENGINE=InnoDB; クエリは正常に実行され、 一意のインデックスと主キーの違いは、一意のインデックスが配置されているフィールドが テーブル `table4` を作成します ( `id` bigint(20) ユニークキー、 `名前` varchar(32) )ENGINE=InnoDB; クエリ ステートメントを実行します。この場合、 主キーと同様に、一意のインデックスが数値以外のフィールドに追加される場合をテストします。次に、テーブルを作成するときに、文字型フィールドに一意のインデックスが追加され、NOT NULL 制約が追加されます。 テーブル `table5` を作成します ( `id` ビッグイント(20)、 `name` varchar(32) NOT NULL 一意キー )ENGINE=InnoDB; 同じクエリでは 上記の 3 つの状況のテスト結果に基づいて、主キーが存在しないが一意のインデックスが存在する場合、一意のインデックスが数値フィールドに追加され、フィールドに null 以外の制約が追加され、 3. 共同主キーまたは共同ユニークインデックスがある上記のテストでは、主キーまたは一意のインデックスを単一の列に適用しました。複合主キーまたは複合一意のインデックスを使用するとどうなるでしょうか?まずは公式ドキュメントの手順を見てみましょう。
簡単に言えば、主キーが存在し、それが数値型の列 1 つだけで構成されている場合、 この説明に基づいて、共同主キーの状況をテストしてみましょう。次のテーブルは、数値型フィールドの 2 つの列を共同主キーとして作成されています。 テーブル `table6` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 `名前` varchar(32), 主キー(`id`,`no`) )ENGINE=InnoDB; 同様に、この理論は一意のインデックスにも適用できます。空でない一意のインデックスが単一の列で構成されていない場合、 4. 複数の一意のインデックスがあるMySQL では、各テーブルには主キーを 1 つしか持てませんが、一意のインデックスを複数持つことができます。したがって、ルールを同時に満たす一意のインデックスが複数ある場合、
簡単に言えば、テーブル内の最初の空でない一意のインデックスが 1 つの整数型フィールドのみで構成されている場合、 次の表で、ルールを満たす 2 つの一意のインデックスを作成します。 テーブル `table8_2` を作成します ( `id` bigint(20) NOT NULL, `no` bigint(20) NOT NULL、 `名前` varchar(32), ユニークキー(いいえ) ユニークキー(id) )ENGINE=InnoDB; クエリ ステートメントを実行した結果を見てみましょう。 したがって、テーブルに作成された最初の一意のインデックスが テーブル `table9` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 `名前` varchar(32), ユニークキー `index1`(`id`,`no`), ユニークキー `index2`(`id`) )ENGINE=InnoDB; テーブルをクエリすると、単一列の空でない一意のインデックスがあるにもかかわらず、順番に選択された最初の列が要件を満たしていないため、 上記の一意のインデックスを作成するためのステートメントの順序を逆にすると、 5. 主キーとユニークインデックスが同時に存在する上記の例から、ユニーク インデックスの定義順序によって、 次のステートメントを使用して 2 つのテーブルを作成します。唯一の違いは、主キーと一意のインデックスが作成される順序です。 テーブル `table11` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 主キー(id)、 ユニークキー(いいえ) )ENGINE=InnoDB; テーブル `table12` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 ユニークキー(id)、 主キー (いいえ) )ENGINE=InnoDB; 実行結果を表示します: 修飾された主キーと一意のインデックスの両方が存在する場合、作成順序に関係なく、 6. 要件を満たす主キーまたは一意のインデックスがない上記では、 実際、デフォルトの主キーがない場合、 テーブル `table10` を作成します ( `id` ビッグイント(20)、 `名前` varchar(32) )ENGINE=InnoDB; まず、mysql プロセスの ps -ef | grep mysqld ご覧のとおり、mysql プロセスの 始める前に、いくつか準備が必要です。 次に、 gdb -p 2068 -ex 'p dict_sys->row_id=1' -バッチ コマンド実行結果: 空のテーブルに 3 行のデータを挿入します。 テーブル10に値(100000001、'Hydra')を挿入します。 テーブル10に値(100000002、'トランク')を挿入します。 テーブル10に値(100000003、'スーザン')を挿入します。 テーブル内のデータを表示します。対応する 次に、 gdb -p 2068 -ex 'p dict_sys->row_id=281474976710656' -バッチ コマンド実行結果: テーブルにさらに 3 つのレコードを挿入します。 テーブル10に値(100000004、'キング')を挿入します。 テーブル10に値(100000005、'Queen')を挿入します。 テーブル10に値(100000006、'Jack')を挿入します。 テーブル内のすべてのデータを表示すると、最初に挿入された 3 つのデータのうち 2 つが上書きされていることがわかります。 なぜデータカバレッジが発生するのでしょうか? この結果を分析してみましょう。まず、最初のデータが挿入される前は、 同じ したがって、テーブル内の主キーまたは一意のインデックスが上記の要件を満たしていない場合、
MySQL の隠し列の具体的な使用法に関するこの記事はこれで終わりです。MySQL の隠し列に関するより詳しい情報は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード
>>: thead、tfoot、tbodyを使用して表を作成します
FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...
大量のデータベース データを最適化することは非常に高度な科学であり、開発者が習得する必要がある専門的...
最近の勉強で、GitHub でレイアウトの練習をいくつか見つけたのですが、レイアウトにまったく慣れて...
/**************************** * システムコール**********...
コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...
float:左/右/なし; 1. 同じレベルフローティング(1)ブロックレベル要素を同じ行に表示する...
Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...
マスターのメソッドによると、原因は sysctl net.ipv4.ip_forward であること...
Dockerをインストールするyumパッケージを最新バージョンに更新します: sudo yum up...
最近では、多くのウェブサイトでは、ページ上の特定のコンテンツや情報を直接コピーすることは許可されてお...
目次序文1. DDL 1.1 データベース操作1.2 データテーブルの操作1.3 一般的なデータ型1...
Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...
目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...
トランザクション ログには、関連するデータベースに対する操作が記録され、データベースの回復に関連する...
序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...