MySQL の主キーが自動的に増加するのはなぜですか?
mysql のプライマリ キーの自動インクリメントの理由: 1. データ レコード自体はプライマリ インデックスのリーフ ノードに保存されます; 2. MySQL はプライマリ キーに基づいて適切なノードと場所にデータ レコードを挿入します。 ; 3. テーブルは自動インクリメント主キーを使用し、新しいレコードが挿入されるたびに、レコードは現在のインデックス ノードの後続の位置に順番に追加されます。
MySQL が自動インクリメント主キーを使用する理由は、InnoDB テーブルを使用すると非常に便利であり、効率が大幅に向上するためです。
推奨コース: MySQL チュートリアル 。
InnoDB エンジン テーブルの特徴
1. InnoDB エンジン テーブルは、B ツリーに基づくインデックス構成テーブル (IOT)です
B について-tree
B ツリーの特徴:
すべてのキーワードはリーフ ノードのリンク リスト (密なインデックス) に表示され、キーワードはリンク リストに表示されます。たまたまシーケンシャルです;
非リーフ ノードにヒットすることは不可能です;
非リーフ ノードはリーフ ノードのインデックス (スパース インデックス) と同等であり、リーフ ノードも同等ですストレージ (キーワード) データのデータ層;
2. 主キー (PRIMARY KEY) を定義すると、InnoDB は主キーをクラスター化インデックスとして選択します。主キーが明示的に定義されていない場合は、 InnoDB は、NULL を含まない最初のインデックスを選択します。値の一意のインデックスが主キー インデックスとして使用されます。そのような一意のインデックスがない場合、InnoDB は、組み込みの 6 バイト長の ROWID を暗黙的なクラスター化された ROWID として選択します。インデックス (ROWID は、行レコードが書き込まれ、主キーがインクリメントされるとインクリメントされます。この ROWID は、暗黙的に引用できる ORACLE の ROWID とは異なります)。
3. データ レコード自体は、メイン インデックス (B ツリー) のリーフ ノードに保存されます。これには、同じリーフ ノード (1 つのメモリ ページまたはディスク ページのサイズ) 内の各データ レコードが主キーの順序で格納される必要があるため、新しいレコードが挿入されるたびに、MySQL はその主キーに基づいて適切なノードにそのレコードを挿入します。 . と位置、ページが読み込み係数 (InnoDB のデフォルトは 15/16) に達すると、新しいページ (ノード) が開かれます
4. テーブルが自動増加する主キーを使用する場合、すべての新しいレコードが挿入されると、そのレコードは現在のインデックス ノードの後続の位置に順番に追加されます。ページがいっぱいになると、新しいページが自動的に開かれます。
5. 自動でない場合は、新しいページが自動的に開きます。 -増加する主キーが使用される (ID 番号や学生番号などの場合) 、毎回挿入される主キーの値はほぼランダムであるため、各新しいレコードは既存のインデックス ページの中央のどこかに挿入する必要があります。今回、MySQL は新しいレコードを適切な場所に挿入するためにデータを移動する必要があり、ターゲット ページがディスクに書き戻されてキャッシュからクリアされている可能性もあります。この時点で、データを読み戻す必要があります。ディスクからデータが削除されるため、多くのオーバーヘッドが追加されます。同時に、頻繁に移動およびページング操作が行われると、多くのフラグメントが発生し、その結果、イメージのコンパクトさが低下します。インデックス構造では、テーブルを再構築し、埋めるページを最適化するために OPTIMIZE TABLE が必要です。
まとめると、InnoDB テーブルのデータ書き込み順序と B-tree インデックスのリーフ ノードの順序を一致させることができれば、この時点で最もアクセス効率が高くなります。以下の場合のアクセス効率が向上します 最高:
自動インクリメントカラム(INT/BIGINT型)を主キーとして使用 この時の書き込み順序は自動インクリメントとなり、分割と一致しますB の順序 リーフ ノードの数;
このテーブルでは指定されていません オートインクリメント列が主キーとして使用されており、主キーとして選択できる一意のインデックスがありません (上記の条件)このとき、InnoDB は組み込み ROWID を主キーとして選択し、書き込み順序は ROWID の増加順序と一致します;
さらに、InnoDB テーブルに主キー、主キーとして選択できる一意のインデックスがありますが、一意のインデックスは増分関係 (文字列、UUID、複数フィールド結合の一意のインデックスなど) にない場合があり、テーブルのアクセス効率が低下します。比較的貧乏であること。
以上がMySQL の主キーが自動的に増加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

MySQLがテーブル構造を変更すると、メタデータロックが通常使用され、テーブルがロックされる可能性があります。ロックの影響を減らすために、次の測定値をとることができます。1。オンラインDDLでテーブルを使用できます。 2。バッチで複雑な変更を実行します。 3.小規模またはオフピーク期間中に操作します。 4. PT-OSCツールを使用して、より細かい制御を実現します。

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLは、複数の同時接続を処理し、マルチスレッド/マルチプロセスを使用して、各クライアントのリクエストに独立した実行環境を割り当てて、邪魔されないことを確認できます。ただし、同時接続の数は、システムリソース、MySQL構成、クエリパフォーマンス、ストレージエンジン、ネットワーク環境の影響を受けます。最適化では、コードレベル(効率的なSQLの書き込み)、構成レベル(MAX_Connectionの調整)、ハードウェアレベル(サーバー構成の改善)などの多くの要因を考慮する必要があります。

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。
