1. InnoDBストレージエンジンを使用する必要があります CPU と IO のパフォーマンスが向上し、バックアップとテーブル ロックのメカニズムが改善され、統計とデバッグの効率が向上しました。 さらに、システムとして、InnoDB はさまざまな主要機能をサポートしていますが、その中で最も重要なのはトランザクション ログと行レベルのロックです。トランザクション ログには実際のデータベース トランザクションが記録されますが、さらに重要なのは、データ クラッシュの回復とロールバックです。 InooDB ベースの IO は、より安全なデータ保護と優れたパフォーマンスを提供できます。さらに、ほとんどの場合、行レベルのロックでは、ユーザーが書き込むデータのみをロックし、データの読み取りはブロックされないため、より高い同時実行パフォーマンスを実現できます。 2. データテーブルとデータフィールドに中国語のコメントを追加する必要がある 将来、新規ユーザーがより早く理解して慣れるのに便利になり、さらに読みやすくなります。同時に、ステータス フィールドには、削除の場合は 0、正常の場合は 1 などの列挙値がマークされます。 3. UTF8mb4文字セットを使用する必要があります UTF8 はユニバーサル文字セットです。MB4 は UTF8 の拡張であり、絵文字などの新しい文字をサポートします。 4. ストアド プロシージャ、ビュー、トリガー、イベント、結合などの使用を禁止します。 高同時実行ビッグデータ インターネット サービスの場合、アーキテクチャ設計の考え方は、「データベース CPU を解放し、コンピューティングをサービス層に移す」ことです。データベースはストレージとインデックス作成に適しており、ビジネス層では CPU コンピューティングの方が合理的です。 5. 大きなファイルや写真を保存しない 人物の写真が多いと、ページングクエリの速度が大幅に低下します。以前は 1 秒以内に応答していましたが、写真フィールドを追加してからは、応答に約 4 ~ 5 秒かかります。 6. テーブルには、自動増分主キーなどの主キーが必要です。 a) 主キーの増分とデータ行の書き込みにより、挿入パフォーマンスが向上し、ページ分割が回避され、テーブルの断片化が軽減され、スペースとメモリの使用量が改善されます。 7. 外部キーは禁止されています。外部キーの整合性制約がある場合は、アプリケーション制御が必要です。 外部キーはテーブル間の結合を引き起こします。更新および削除操作には関連するテーブルが関係するため、SQL のパフォーマンスに大きな影響を与え、デッドロックを引き起こすこともあります。 8. フィールドはNOT NULLとして定義され、デフォルト値が提供される必要があります。 a) NULL 値を持つ列により、インデックス/インデックス統計/値の比較がより複雑になり、MySQL による最適化が困難になります。 たとえば、name!='nx' の場合、name が null のレコードが存在すると、クエリ結果には name が null のレコードは含まれません。 9. TEXT型とBLOB型は使用しない ディスクとメモリのスペースがさらに無駄になります。不必要な大規模フィールドのクエリによってホット データが削除され、メモリ ヒット率が急激に低下し、データベースのパフォーマンスに影響を及ぼします。 10. 通貨を保存するのに小数点を使用しない 小数点を使用すると金額が一致しなくなる可能性が高くなりますので、整数を使用してください。 11. 携帯電話番号を保存するにはvarchar(20)を使用する必要があります a) 市外局番や国番号の場合、+-()が表示されることがあります。 12. ENUMは禁止されています。代わりにTINYINTを使用できます。 a) 新しいENUM値を追加するにはDDL操作が必要です 13. インデックス設計について (1)1つのテーブル内のインデックスの数は5未満に制限することをお勧めします。 インデックスの数が多いほど良いというわけではありません。インデックスは効率を向上させることができますが、効率を低下させることもできます。 インデックスはクエリの効率を高めることができますが、挿入と更新の効率、さらには場合によってはクエリの効率も低下させる可能性があります。 MySQL オプティマイザがクエリを最適化する方法を選択する際、統合された情報に基づいて利用可能な各インデックスを評価し、最適な実行プランを生成します。クエリに同時に多くのインデックスを使用できる場合、MySQL オプティマイザが実行プランを生成する時間が長くなり、クエリのパフォーマンスも低下します。 (2)頻繁に更新され、差別化の度合いが低い属性にはインデックスを作成しないでください。 a) 更新によりB+ツリーが変更され、頻繁に更新されるフィールドのインデックス作成によりデータベースのパフォーマンスが大幅に低下します。 (3)複合インデックスを作成する場合、識別力の高いフィールドを先頭に配置する必要があります。 理由: データをより効果的にフィルタリングできる 14. SQLの使用仕様について (1) INSERT INTO t_xxx VALUES(xxx)は禁止されています。挿入する列属性を指定する必要があります。 理由: フィールドを追加または削除すると、プログラムにバグが発生しやすくなります。 (2)WHERE条件の属性に関数や式を使用することは禁止されています。 理由: SELECT uid FROM t_user WHERE from_unixtime(day)>='2019-10-09' を実行すると、テーブル全体がスキャンされます。正しい書き方は次のとおりです: SELECT uid FROM t_user WHERE day>= unix_timestamp('2019-10-09 00:00:00') (3)%で始まる否定クエリやあいまいクエリは禁止されている 理由: (4)大きなテーブルではJOINクエリとサブクエリは禁止されています。 理由: 一時テーブルが生成され、メモリとCPUの消費量が増え、データベースのパフォーマンスに大きな影響を与えます。 (5)OR条件は禁止されており、INクエリに変更する必要がある。 理由: MySQL の古いバージョンの OR クエリでは、インデックスにヒットできません。インデックスにヒットできたとしても、クエリの最適化を実装するためにデータベースがより多くの CPU を消費する必要があるのはなぜでしょうか? (6)アプリケーションはSQL例外を捕捉し、それに応じて処理する必要がある 以上がMySQL使用仕様のまとめの詳細内容です。MySQL使用仕様の詳細については、123WORDPRESS.COMの他の関連記事にも注目してください! 以下もご興味があるかもしれません:
|
>>: この記事はVueのライフサイクルを理解するのに役立ちます
以前、https://www.jb51.net/article/205922.htm で、Docke...
目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...
右クリックメニューを無効にする <body oncontextmenu=self.event....
目次Linux netstat コマンド1. TCP接続ステータスの詳細な説明2. コマンド形式3....
データベースの組み込み関数の使用この記事では、主に日付関数、文字列関数、数学関数など、データベースの...
UPD 2020.2.26 現在、Ubuntu 20.04 LTSはまだリリースされていないため、チ...
成果を達成する 実装コードhtml <div id=コンテナ> いらっしゃいませ <...
このセクションでは、HTML のリスト要素について学習します。リストは、Web サイトのデザインにお...
Dockerfile内の指定されたファイルに複数の行を追加します。echoの後の「$」記号に注意し...
最近、ウェブサイトを開発する際にトップに戻るボタンを作成する必要がありますが、私は主にバックエンドの...
この記事では、React Native の基本をすでに理解していることを前提とし、ネイティブと Ja...
1. vue2 での従来の書き方 // 親コンポーネントは 'foo' を提供します...
HTML5 のドラッグ アンド ドロップ機能は誰もが知っていますが、これを使用するとドラッグ アンド...
これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...
環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...