MySQL-uuidを主キーとした場合とintを主キーとした場合のパフォーマンス測定比較の詳細説明
偶然、mysql主キー型はUUIDの格納にvarcharを使用しており、queryパフォーマンスがint型の主キーほど良くないことを知りました。インターネット上の多くの情報は理論上のものにすぎません。したがって、以下の結果は参考用であり、信頼できるものではありません。
3 つのテーブルのフィールドは、主キー ID がそれぞれ varchar、bigint、自動インクリメント bigint を使用することを除き、他の 3 つのフィールドはすべて varchar 36 ビットです
データベース: mysql5.5
テーブルタイプ: InnoDB
データ量: 100W アイテム
最初のケース:
主キーは uuid 32 ビットを使用します。
クエリ ステートメント 1 の実行: SELECT COUNT(id) FROM test_varchar;
クエリ ステートメント 2 の実行: SELECT * FROM test_varchar WHERE vname='00004629-b052-11e1-96aa-002655b28d7b';
クエリ ステートメント 3 の実行: SELECT * FROM test_varchar WHERE id='00004599b05211e196aa002655b28d7b';
ステートメント 1 の平均時間は 2.7 秒、
ステートメント 3 の平均時間は 0 秒です。秒; (マルチパーティテスト、条件に主キー ID がある限り、ミリ秒単位のクエリ速度は 000 になります。テストされる ID 値には、最初の 100 と最後の 900,000 が含まれます。クエリ時間は全く同じで、ミリ秒レベルは 000)
2 つの状況:主キーは bigint
を使用し、データは純粋な数値のシーケンス (22461015967875697) を使用します。 (固定ベース値が大きいことを除いて、自動拡張と同等です。) クエリ ステートメント 1 の実行: SELECT COUNT(id) FROM test_long; クエリ ステートメント 2 の実行: SELECT * FROM test_long WHERE vname='d7f28a24- b053 -11e1-96aa-002655b28d7b';
クエリ ステートメント 3 を実行します: SELECT * FROM test_long WHERE id='22461015967875702';
ステートメント 1 にかかる平均時間は次のとおりです:
ステートメント 2 にかかる平均時間は 1.2 秒です。ステートメント 3 の平均消費時間は 0 秒です (マルチパーティ テスト、条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 と表示されます)値の範囲は最初の 100 から 900,000 を超えます) クエリ時間はまったく同じで、ミリ秒レベルは 000)
3 番目のケース:クエリ ステートメント 1: SELECT COUNT(id) FROM test_int ;
クエリ ステートメント 2 の実行: SELECT * FROM test_int WHERE vname= 'c80f8427-b059-11e1-96aa-002655b28d7b'; クエリ ステートメント 3 の実行: SELECT * FROM test_int WHERE id=900000;
主キーは次を使用します。 mysqlに付属する自動拡張機能であり、データは純粋な数値 (1、2、3、4、5...) です。
クエリ ステートメント 1 の平均所要時間: 1.07 秒;
クエリ ステートメント 2 の平均所要時間: 1.31 秒; クエリ ステートメント 3 の平均所要時間: 0 秒条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 を示します。テストされた ID 値には最初の 100 と最後の 900,000 が含まれており、クエリ時間はまったく同じです。 all 000)
概要
: Mysql InnoDB の主キーは自動拡張を採用し、パフォーマンスが向上していることがわかります。筆者の独り言: 通常のプロジェクト開発では、SQL文の条件にIDがあるものが多数派であり、IDがないものが少数派である。上記のテストでは、条件ステートメントに主キー ID がある限り、主キーの種類に関係なく、クエリ時間はまったく同じであることがわかります。ただし、プロジェクト内のすべての SQL ステートメントの条件に ID があることを保証することはできません。そのため、どのタイプの主キーを使用する必要があるかはすでに理解していると思います。 データベース: mysql5.5
テーブルタイプ: MyISAM
データ量: 100W 項目
書く単語を減らして時間を節約するために、テーブルこの中で使われているtest SQL ステートメントと同様に、ここでは消費時間のみが記録されます。
最初のケース:主キーは uuid 32 ビットを使用します。
ステートメント 1 の平均時間は 0 秒、
ステートメント 2 の平均時間は 0.53 秒、 ステートメント 3 の平均時間は 0 秒です。条件に主キー ID がある限り、クエリ速度はミリ秒レベルで 000 を示します。テストされた ID 値には、最初の 100 と最後の 900,000 が含まれます。クエリ時間はまったく同じで、ミリ秒レベルは次のようになります。 all 000)
2 番目のケース: 主キー。bigintを使用し、uuid_short() を使用してデータを生成します (22461015967875697)。 (固定ベース値が大きいことを除いて、自動拡張と同等です。) ステートメント 1 の平均消費時間は 0 秒です。
ステートメント 2 の平均消費時間は 0.51 秒です。
ステートメント 3 の平均消費時間は次のとおりです。 (マルチパーティ テスト。条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 と表示されます。テストされた ID 値の範囲は、最初の 100 から 900,000 を超えるまではクエリ時間はまったく同じで、ミリ秒レベルは 000)
3 番目のケース:
主キーは mysql に付属する自動拡張を使用しており、データは純粋です数字 (1、2、3、4、5...) 。
ステートメント 1 の平均時間は 0 秒です。 ステートメント 2 の平均時間は 0.48 秒です。条件に主キー ID があるため、クエリ速度はミリ秒です。テスト ID 値の範囲は最初の 100 から 900,000 を超えます。クエリ時間はまったく同じで、ミリ秒レベルは 000) です。概要: mysql MyISAM の主キーは自動を使用していることがわかります。成長パフォーマンスは他のものよりわずかに優れています。テストデータが 1000W 100000000 であれば、外部キー関連のクエリもあれば、この利点はさらに顕著になると思います。もちろん、設計するシステムのデータ量が 100 万を超えない場合は、使用する主キーの種類は関係ありません。私のテスト コンピュータはラップトップです。プロ用サーバーの場合、これらの mysql MyISAM のテストでは時間差をまったく測定できません。以上がMySQL-uuidを主キーとした場合とintを主キーとした場合のパフォーマンス測定比較の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。
