データベース速度を最適化するための 10 のヒント
ほとんどの Web サイト コンテンツはデータベースに保存され、ユーザーはリクエストを通じてコンテンツにアクセスします。データベースは非常に高速であり、サーバー リソースを無駄にしないようにデータベースの速度を最適化できる技術が多数あります。この記事では、データベースの速度を最適化するための 10 のヒントを紹介しました。
1. データベースを慎重に設計する
最初のヒントは明白に思えるかもしれませんが、実際、データベースの問題のほとんどは、設計が不十分なデータベース構造に起因しています。
例えば、顧客情報と支払い情報が同じデータベース列に格納されている例に遭遇したことがあります。これはシステム開発者やデータベース開発者にとって好ましくありません。
新しいデータベースを作成するときは、標準の命名方法と主キーを使用して、情報を別のテーブルに保存する必要があります。
出典: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-missing/
2. 最適化するために何が必要かを知る
何かを最適化したい場合クエリ ステートメント。このステートメントの結果を明確に知ることは非常に役立ちます。 EXPLAIN ステートメントを使用すると、多くの有益な情報が得られます。例を見てみましょう:
EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column;
出典: http://dev.MySQL .com /doc/refman/5.0/en/using-explain.html
3. 最速のクエリステートメント…送信しなかったクエリステートメントです
データベースにステートメントを送信するたびに、大量のサーバーリソース。したがって、トラフィックの多い Web サイトでは、クエリ ステートメントをキャッシュするのが最善の方法です。
ステートメントをキャッシュする方法はたくさんありますが、そのいくつかを以下に示します:
AdoDB: AdoDB は、PHP データベースの簡易ライブラリです。これを使用すると、さまざまなデータベース システム (MySQL、PostGreSQL、Interbase など) から選択でき、速度を重視して設計されています。 AdoDB は、シンプルだが強力なキャッシュ システムを提供します。また、AdoDB には BSD ライセンスがあるため、プロジェクトで無料で使用できます。商用プロジェクトの場合は、LGPL ライセンスも取得しています。
Memcached: Memcached は、データベースの負荷を軽減し、動的データベースに基づいて Web サイトを高速化できる分散メモリ キャッシュ システムです。
CSQL Cache: CSQL Cache は、オープンソースのデータ キャッシュ アーキテクチャです。試したことはありませんが、とても良さそうです。
4. 必要のないものは選択しないでください
必要なデータを取得するには、すべての列をリストする * 文字を使用するのが一般的な方法です。
SELECT * FROM wp_posts;
ただし、以下に示すように、必要な列のみをリストする必要があります。非常に小規模な Web サイトの場合、たとえば 1 分間に 1 人のユーザーがアクセスする場合は、何の違いも生じない可能性があります。ただし、Cats Who Code のようなトラフィックの多い Web サイトの場合、これによりデータベースの作業が大幅に節約されます。
SELECT title, excerpt, author FROM wp_posts;
5. LIMITを使う
特定の行数のデータのみを取得することは非常に一般的です。たとえば、ブログには 1 ページに 10 件の記事しか表示されません。このとき、LIMIT を使用して、選択するデータの行数を制限する必要があります。
LIMIT がなく、テーブルに 100,000 行のデータがある場合、すべての行を走査することになり、サーバーに不必要な負担がかかります。
SELECT title, excerpt, author FROM wp_posts LIMIT 10;
6. ループ内のクエリを避ける
PHPでSQLを使う場合、SQLをループ文の中に入れることができます。ただし、そうするとデータベースにさらなる負担がかかります。
次の例は、「ループ ステートメント内のクエリ ステートメントのネスト」の問題を示しています:
foreach ($display_order as $id => $ordinal){ $sql = "UPDATEcategories SET display_order = $ordinal WHERE id = $id "; mysql_query($sql); }
これを実行できます:
カテゴリを更新 SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3 )
出典: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with- Different-values-and-a-single-sql-query/
7. 結合を使用して置換しますサブクエリ
プログラマーはサブクエリを使用したり、乱用したりする場合があります。次のサブクエリは非常に便利です:
SELECT a.id, (SELECT MAX(created) FROM jobs WHERE author_id = a.id) AS last_post FROM authors a
サブクエリは便利ですが、join ステートメントで置き換えることができます。 join ステートメントの実行が高速になります。
SELECT a.id, MAX(p.created) AS last_post FROM authors a INNER JOIN 投稿 p ON (a.id = p.author_id) GROUP BY a.id
出典: http://20bits.com/articles /10-tips-for-optimizing-mysql-queries-that-dont-suck/
8. ワイルドカードは慎重に使用してください
ワイルドカードは非常に簡単に使用できます。データを検索するときに、ワイルドカードを使用して 1 つ以上の文字を置き換えることができます。使用できないとは言いませんが、使用する場合は注意が必要で、前置ワイルドカードや後置ワイルドカードを使用しても同じ作業が行われる可能性がありますので使用しないでください。
実際、何百万ものデータに対して単語全体のワイルドカード検索を使用すると、データベースがクラッシュします。
#完全なワイルドカード SELECT * FROM TABLE WHERE COLUMN LIKE '%hello%'; #Postfix ワイルドカード ' %hello';
データベースのインデックスは、図書館にあるインデックスに似ています。図書館のインデックスと同じように、必要な情報をより迅速に取得できます。欲しい本をより早く見つけることができます。
インデックスは 1 つの列または複数の列に作成できます。インデックスは、テーブル内の 1 つ以上の列の値を特定の順序で編成するデータ構造です。
次のステートメントは、Product テーブルの Model 列にインデックスを作成します。このインデックスの名前は idxModel です
CREATE INDEX idxModel ON Product (Model); 上記は、データベースの速度を最適化するための 10 のヒントです。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) を参照してください。 )!

mysqlhandlesconcurrencyusing amixofrow-levelandtable-levellocking、主にthroughnodb'srow-levellocking.comparedtootherrdbms、mysqlのsapproachiseformanyusecasesecasesbutmayfaceChallengeswithdeadlockdlacklikeRisikErisikErikErikErikErikErikErikErikErikErikErikErikErikErikErikeを使用してください

mysqlhandlestransactionsefectivectivelivationtivelivational supportingingacidpropertiessimilArtopostgreslesclandoracle.1)mysqluseSesrepeatable-readededededededededededefaultisolation level

MySQLデータ型は、数値、日付と時刻、文字列、バイナリ、空間型に分割されます。正しいタイプを選択すると、データベースのパフォーマンスとデータストレージを最適化できます。

ベストプラクティスには以下が含まれます。1)データ構造とMySQL処理方法の理解、2)適切なインデックス作成、3)SELECT*、4)適切な結合タイプの使用、5)サブQueriesを使用して、5)慎重に使用します。これらのプラクティスは、MySQLクエリを高速であるだけでなく、保守性、スケーラビリティ、リソース効率もすることができます。

mysqlisbetterforspeedandsimplicity、適切なforwebapplications; postgresqlexcelsincomplexdatascenararios withobustfeatures.mysqlisidealforquickprojectsandread-havytasks、whilepostgressqlessqlispreredforforivationsRedictrictiontrictdateinitegriTinitegriTiontegriTioniitaintegrategrisioniationegrisioniaty

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









