検索
ホームページデータベースmysql チュートリアルMysqlデータベースの最適化方法のまとめ(必読)

この記事は、Mysql データベースの最適化方法をまとめたものです。必要な方は参考にしていただければ幸いです。

学習には終わりがありません。データベースの最適化はさまざまな側面に分かれています。ここでは、比較的完全な要約を作成し、仕事や勉強をしている同僚と共有しました。

データベースの最適化は、次の 7 つの主要な側面に分かれています:

1. テーブルの設計は、 3 正規形 に準拠する必要があります ( 適切な逆 3 正規形も使用できます)。 );

2. インデックスはクエリの速度に大きな影響を与えます (主キー インデックス、通常のインデックス、フルテキスト インデックス)。プロシージャ、トリガー、トランザクションなど。

4 、読み取りと書き込みの分離 (マスターとスレーブのデータベース)

5. SQL ステートメントの最適化 (クエリの実行速度が遅い)。

テーブルのパーティショニング: 大きなテーブルを複数のテーブルに分割します。 パーティション: テーブルの内容をストレージ用に異なる領域に割り当てます

7. mysql サーバー ハードウェアをアップグレードします。

次に最適化方法を詳しく説明します。

第一正規形と第三正規形

第一正規形:

原子性: リレーショナルデータベースである限り、テーブル内のフィールドはそれ以上分割できません。第一正規形

関係 タイプ データベース

(行と列の概念を含む) : mysql、sql サーバー、oracle、db2、infomix、sybase、postgresql を設計するときは、まずライブラリ -> テーブル -> を用意します。 ;フィールド>特定のレコード (コンテンツ): データを保存する場合、フィールドを設計する必要があります。

非リレーショナル データベース (一般的に nosql データベースと呼ばれます): memcache、redis、momgodb など。

第 2 正規形:

テーブル内に同一のレコードはなく、主キーによって解決できます

第 3 正規形:

冗長なデータは格納できませんテーブル


リバーススリーパラダイムデザイン:

アルバムテーブル

IDAlお尻の名前アルバムビュー数写真100
1 人生
100 2 仕事写真
写真リスト
IDフォトブックID100

アルバムのビューを計算したい場合は、アルバム テーブルにアルバム ビュー フィールドを追加し、写真を参照するときに同時にアルバム ビューを更新できます。

2. スロークエリをオンにする

Mysql のスロークエリはデフォルトでオフになっており、10 秒を超える SQL ステートメントはデフォルトで記録されます。

1. 遅いクエリのレコード時間を確認します:

show variables like ‘long_query_time’;

2. 次の関数を使用してテストします:

set long_query_time=2;

3.

1. 主キーインデックスの特徴:

(1) テーブルには最大 1 つの主キーインデックスが存在します (2) 1 つの主キーインデックスは複数の列を指すことができます

(3)主キーインデックスのカラムは重複値やnullは不可

(4) 主キーインデックスの効率が高い。

2. 一意のインデックスの特徴:

(1) テーブル内に複数の一意のインデックスが存在する可能性があります
(2) 一意のインデックスは複数の列を指すことができます

(3) 一意の場合インデックスでは、not null が指定されていない場合、列が空になる可能性があり、同時に複数の null が存在する可能性があります。

(4) 一意のインデックスの方が効率的です。

3. 通常のインデックス:

通常のインデックスの使用は主にクエリ効率を向上させるためです

4. フルテキスト インデックス

MySQL 独自のフルテキスト インデックス mysql5.5 は中国語をサポートしていません。ただし、必要なテーブルのストレージ エンジンは myisam です。中国語をサポートしたい場合は、(1) aphinx 中国語版 coreseek を使用する (全文インデックスを置き換える)

(2) プラグイン mysqlcft の 2 つのオプションがあります。

インデックス追加時の主な問題:

(1) クエリ条件として頻繁に使用されるフィールドにはインデックスを作成する必要があります。一意性の低いフィールドは、たとえ頻繁にクエリ条件として使用されるとしても、個別のインデックス作成には適していませんクエリ条件、

Update 非常に頻繁なフィールドはインデックスの作成には適していません

(2) WHERE 句に出現しないフィールドにはインデックスを作成しないでください。クエリの速度は向上しますが、 には影響があります。追加と削除の効率化。また、インデックス ファイルがスペースを占有します。

4. サブテーブル、パーティション

垂直サブテーブル (コンテンツメインテーブル + 追加テーブル):

コンテンツメインテーブル: さまざまなデータの一部の公開情報を格納します。 , たとえば、データの名前や追加時刻など、
は複数の追加テーブルを使用でき、追加テーブルにはデータの何らかの固有の情報が保存されます。

主な理由: コンテンツ マスター テーブル内のデータへのアクセスがより頻繁になります。

特徴: 異なるテーブル構造


水平テーブル分割:

テーブルデータを異なるテーブルに保存


特徴: テーブル構造は同じです


パーティション:

は、ディスクの異なる領域にテーブルを格納しますが、それでも 1 つのテーブルです。

基本概念:

(1)範囲 – このモードでは、データをさまざまな範囲に分割できます。たとえば、テーブルを年ごとに複数のパーティションに分割できます。

(2)List (事前定義リスト) – このモードでは、システムが事前定義リストの値によってデータを分割できます。

(3)ハッシュ (ハッシュ) – このモードでは、テーブルの 1 つ以上の列のハッシュ キーを計算でき、最後にこのハッシュ コードのさまざまな値に対応するデータ領域を分割します。たとえば、テーブルの主キーを分割するテーブルを作成できます。

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。

(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。

五、并发处理的锁机制

锁机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。

mysql 的锁有以下几种形式:

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。

表锁的演示:

1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。

2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。

3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。

4.锁表的语法:

lock table 表名 read|write

5.也可以锁定多个表

6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,

7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。

 行锁的演示:

1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。

2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。

php里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。

相关推荐:



写真名
閲覧数 2

以上がMysqlデータベースの最適化方法のまとめ(必読)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL:世界で最も人気のあるデータベースの紹介MySQL:世界で最も人気のあるデータベースの紹介Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLの重要性:データストレージと管理MySQLの重要性:データストレージと管理Apr 12, 2025 am 12:18 AM

MySQLは、データストレージ、管理、クエリ、セキュリティに適したオープンソースのリレーショナルデータベース管理システムです。 1.さまざまなオペレーティングシステムをサポートし、Webアプリケーションやその他のフィールドで広く使用されています。 2。クライアントサーバーアーキテクチャとさまざまなストレージエンジンを通じて、MySQLはデータを効率的に処理します。 3.基本的な使用には、データベースとテーブルの作成、挿入、クエリ、データの更新が含まれます。 4.高度な使用には、複雑なクエリとストアドプロシージャが含まれます。 5.一般的なエラーは、説明ステートメントを介してデバッグできます。 6.パフォーマンスの最適化には、インデックスの合理的な使用と最適化されたクエリステートメントが含まれます。

なぜMySQLを使用するのですか?利点と利点なぜMySQLを使用するのですか?利点と利点Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

InnoDBロックメカニズム(共有ロック、排他的ロック、意図ロック、レコードロック、ギャップロック、次のキーロック)を説明します。InnoDBロックメカニズム(共有ロック、排他的ロック、意図ロック、レコードロック、ギャップロック、次のキーロック)を説明します。Apr 12, 2025 am 12:16 AM

INNODBのロックメカニズムには、共有ロック、排他的ロック、意図ロック、レコードロック、ギャップロック、次のキーロックが含まれます。 1.共有ロックにより、トランザクションは他のトランザクションが読み取らないようにデータを読み取ることができます。 2.排他的ロックは、他のトランザクションがデータの読み取りと変更を防ぎます。 3.意図ロックは、ロック効率を最適化します。 4。ロックロックインデックスのレコードを記録します。 5。ギャップロックロックインデックス記録ギャップ。 6.次のキーロックは、データの一貫性を確保するためのレコードロックとギャップロックの組み合わせです。

貧弱なMySQLクエリパフォーマンスの一般的な原因は何ですか?貧弱なMySQLクエリパフォーマンスの一般的な原因は何ですか?Apr 12, 2025 am 12:11 AM

MySQLクエリのパフォーマンスが低いことの主な理由には、インデックスの使用、クエリオプティマイザーによる誤った実行計画の選択、不合理なテーブルデザイン、過剰なデータボリューム、ロック競争などがあります。 1.インデックスがゆっくりとクエリを引き起こし、インデックスを追加するとパフォーマンスが大幅に向上する可能性があります。 2。説明コマンドを使用してクエリ計画を分析し、オプティマイザーエラーを見つけます。 3.テーブル構造の再構築と結合条件を最適化すると、テーブルの設計上の問題が改善されます。 4.データボリュームが大きい場合、パーティション化とテーブル分割戦略が採用されます。 5.高い並行性環境では、トランザクションの最適化とロック戦略は、ロック競争を減らすことができます。

複数の単一列インデックスに対して複合インデックスをいつ使用する必要がありますか?複数の単一列インデックスに対して複合インデックスをいつ使用する必要がありますか?Apr 11, 2025 am 12:06 AM

データベースの最適化では、クエリ要件に従ってインデックス作成戦略を選択する必要があります。1。クエリに複数の列が含まれ、条件の順序が固定されている場合、複合インデックスを使用します。 2。クエリに複数の列が含まれているが、条件の順序が修正されていない場合、複数の単一列インデックスを使用します。複合インデックスは、マルチコラムクエリの最適化に適していますが、単一列インデックスは単一列クエリに適しています。

MySQLでスロークエリを識別して最適化する方法は? (スロークエリログ、Performance_schema)MySQLでスロークエリを識別して最適化する方法は? (スロークエリログ、Performance_schema)Apr 10, 2025 am 09:36 AM

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

MySQLおよびSQL:開発者にとって不可欠なスキルMySQLおよびSQL:開発者にとって不可欠なスキルApr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません