1. 基本仕様 (1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、行レベルのロック、より優れた同時実行性、CPUおよびメモリキャッシュページの最適化をサポートし、より高いリソース使用率を実現します。 (2)解釈にはUTF8文字セットを使用する必要があります:Unicode、トランスコードの必要がなく、文字化けのリスクがなく、スペースを節約できます。 (3)データテーブルとデータフィールドには中国語で注釈を付ける必要があります。N年後、r1、r2、r3フィールドが何のために使用されるのか誰が知っているでしょうか? (4)ストアドプロシージャ、ビュー、トリガー、イベントの使用を禁止する (5)大きなファイルや大きな写真を保存しない 解釈:データベースが得意ではないことをなぜ許すのでしょうか?大きなファイルや写真はファイルシステムに保存されるため、URIはデータベースに保存する方がよい 2. 命名基準 (6)データベースに接続できるのはIPアドレスではなく、イントラネットドメイン名のみです。 (7)オンライン環境、開発環境、テスト環境データベースイントラネットのドメイン名は、商号:xxxの命名規則に従う。 (8)データベース名、テーブル名、フィールド名:小文字、下線付き、32文字以内、説明が明確でなければならない、ピンインと英語の組み合わせは禁止 (9)テーブル名t_xxx、非ユニークインデックス名idx_xxx、ユニークインデックス名uniq_xxx 3. テーブル設計仕様 (10)単一インスタンステーブルの数は500未満でなければならない (11)1つのテーブル内の列数は30未満でなければならない (12)テーブルには主キーが必要です。たとえば、自動インクリメント主キーの解釈は次のとおりです。 (13)外部キーは禁止されています。外部キー整合性制約がある場合、アプリケーション制御が必要です。外部キーはテーブル間の結合を引き起こします。更新および削除操作は関連するテーブルに関係するため、SQLパフォーマンスに大きな影響を与え、デッドロックを引き起こす可能性もあります。同時実行性が高いと、データベースのパフォーマンスに問題が生じやすくなります。ビッグ データと同時実行性が高いビジネス シナリオでは、データベースのパフォーマンスが最優先事項です。 4. フィールド設計仕様 (14)フィールドはNOT NULLとして定義され、デフォルト値が提供されなければならない。 (15) TEXT型とBLOB型の使用を禁止します。解釈: これにより、ディスクとメモリ領域がさらに浪費されます。不必要な大規模フィールドクエリによりホットデータが排除され、メモリヒット率が急激に低下し、データベースのパフォーマンスに影響します。 (16)通貨を保管する際には小数点を使用しないでください。解釈:整数を使用してください。小数点を使用すると、金額が一致しなくなる可能性があります。 (17)携帯電話番号を保存するにはvarchar(20)を使用する必要があります。解釈: (18)ENUMは禁止されています。代わりにTINYINTを使用できます。 5. インデックス設計仕様 (19)1つのテーブル内のインデックスの数は5未満に制限することをお勧めします。 (20)1つのインデックス内のフィールド数は5を超えることはできません。解釈:フィールドが5つを超えると、データを効果的にフィルタリングできなくなります。 (21)頻繁に更新され、差別化の度合いが低い属性に対してインデックス解釈を作成することは禁止されている。 (22)複合インデックスを作成する場合、識別力の高いフィールドを先頭に配置する必要があります。解釈:これにより、データをより効果的にフィルタリングできます。 6. SQL使用仕様 (23) SELECT *は使用しないでください。必要なフィールドのみが取得されます。列属性を表示する必要があります。 (24) INSERT INTO t_xxx VALUES(xxx)の使用は禁止されています。指定された挿入列の属性を表示する必要があります。解釈: フィールドを追加または削除すると、プログラムバグが発生しやすくなります。 (25) 暗黙的な属性変換は禁止されています。解釈: SELECT uid FROM t_user WHERE phone=13812345678 は完全なテーブルスキャンとなり、phone インデックスにはヒットしません。なぜだと思いますか? (このオンラインの問題は複数回発生しています) (26) WHERE条件の属性に関数や式を使用することは禁止されています。解釈: SELECT uid FROM t_user WHERE from_unixtime(day)>='2017-02-15'は完全なテーブルスキャンになります。正しい書き方は次のとおりです: SELECT uid FROM t_user WHERE day>= unix_timestamp('2017-02-15 00:00:00') (27)%で始まる否定クエリとあいまいクエリは禁止されています。 (28)大きなテーブルに対するJOINクエリとサブクエリの解釈は禁止されています。一時テーブルが生成され、メモリとCPUを多く消費し、データベースのパフォーマンスに大きな影響を与えます。 (29) OR条件は禁止されており、INクエリに変更する必要があります。解釈:古いバージョンのMySQLのORクエリはインデックスにヒットできません。インデックスにヒットできたとしても、クエリの最適化を実装するためにデータベースがCPUを多く消費するのはなぜでしょうか? (30)アプリケーションはSQL例外を捕捉し、それに応じて処理する必要がある 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux でディスク IO を表示し、読み取りと書き込みで高い IO を占有するプロセスを見つけます。
>>: スネークゲームのウェブ版を実装するためのJavaScript
目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...
コードをコピーコードは次のとおりです。 <div contenteditable="...
目次1. イメージをプルする2. ローカルデータボリュームを作成する3. コンテナを作成する4. J...
目次OAuth アプリの作成コードを取得するaccess_tokenを取得するユーザー情報を取得する...
rpm パッケージのインストールは比較的簡単なので、ここでは説明しません。ほとんどのオープンソース ...
アルファベット順DTD: このタグが許可される XHTML 1.0 DTD を示します。 S=厳密、...
任意のウェブページを開きます。例: http://www.baidu.com/ ブラウザのタブのヘッ...
負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...
この記事では主に、Vue で TodoList をカプセル化するケースと、ブラウザのローカル キャッ...
目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....
デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...
CSS を使ってさまざまなグラフィックを実現できるのは素晴らしいことです。画像を切り取る必要はなく、...
1. 一般的なMySQLの設定以下のすべての構成パラメータは、32G のメモリを搭載したサーバーに基...
目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...
MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...