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
以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...
db2 データベースをホストマシンに直接インストールするのは面倒で、ユーザーや権限を巻き込むのも不便...
目次序文インストールと設定1. Echartsをインストールする2. Echartsをグローバルに導...
Cockpit は、CentOS および RHEL システムで使用できる Web ベースのサーバー管...
この記事では、Xshell と関連する構成の一般的な問題について説明します。この記事の構成は、主に ...
目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...
Docker コンテナ内のプログラムは、ホスト ディレクトリ内のデータにアクセスして呼び出す必要があ...
目次1. MySQLのインストール1.2 テーブル、データベース、ユーザーを作成する1.3 リモート...
最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...
目次1. ルートの遅延読み込みとは何ですか? 2. ルートの遅延読み込みの使用1. ルートの遅延読み...
以前にインストールしたmariadbを削除する1. rpm -qa | grep mariadb を...
序文面接中、多くの面接官は「keep-alive が何をするのか知っていますか?」と質問する際に V...
問題の原因:スレーブサーバーがクローンマスターサーバーである場合、server-uuidの値は同じで...
目次1. 計算プロパティとは何ですか? 2. 計算プロパティの構文3. 例1. 計算プロパティとは何...
数日前、国産の XHTML エディタを紹介しました。今日は、有名な海外の Web デザイン ブログl...