MySQLのパフォーマンスの最適化データ型とインスタンス--- 2

文字セットを選択します

直接ので、私たちは可能な限りのデータを減らすことができ、適切な文字セットを使用することによって、大きく異なりますスペースの量を表す異なる文字セットを使用して、同じ内容のために、MySQLの中に格納されたデータを符号化文字集合を決定これにより、IO操作の数を減少させる量、。
それは、ストレージスペースの多くを救うため、目次1.純粋なラテン文字には、LATIN1以外の異なる文字エンコーディングを選択する必要が表すことができません。
2.あなたは私たちが決めることができ、複数の言語に格納する必要がない場合は、他のUNICODEまたはUTF8文字タイプを使用する必要がありますする必要はありません、この時間が無駄になるストレージ領域の多くを引き起こしました。
3.MySQLは、データタイプフィールドに正確であるので、我々は、マルチバイト・データに格納されている大規模なデータベースを必要とするとき、異なるデータタイプが大幅に使用することができる別のテーブル内の異なるフィールドに格納されるデータの量を減らすことにより減少させることができIO操作の数とキャッシュヒット率を向上させます。

主キーを選択します

簡単に維持するために、代理の主キーではなく、ビジネスのカップルとの使用を推奨
数字のビジネス関連、意味のないシーケンス:代理の主キー
の自然主キー:自然にあるもののプロパティを一意に識別
好ましくはすべてのテーブル、テーブルの大部分を、ユニバーサル・キー戦略が書き込まれるソースコードのニーズの数を減らすことができ、システムは、総所有コストを削減します

データ型の最適化

1.小さなデータ、良いデータが
正しくデータを格納できる最小のデータ型を使用しようとする必要があり、彼らは少ないディスク、メモリ、およびCPUのキャッシュを取る、そして処理するときより少ないCPUサイクルを必要とするため、小さなデータ型は、一般的に高速です
2.避けるヌルは
インデックス、統計値の比較は、より複雑である場合ように、SQL NULL列を実行するために最適化することができる
3より適切なデータ・タイプ
1、整数演算は、文字セットと照合するので、文字のコストよりも低いですルールは、整数より複雑な文字比較されている
MySQLの自作のタイプを使用して、2。そのような缶は、文字列の日付と時刻格納するために使用されていない
3が作ることができる整数として格納されているIPアドレス INET_ATON()関数では、INET_NTOAを変換し、2つの表現の間。利点は欠点が読みにくくあり、収納スペースを小さくします

SELECT INET_ATON('192.168.23.4');
SELECT INET_NTOA(3232241412);

4. TINYINT、SMALLINT、MEDIUMINT、INT、BIGINTは8,16,24,32,64ビットのメモリ空間を使用しました。最小データ・タイプを使用するために必要
5 クエリの速度に応じて:チャー> VARCHAR>テキスト
文字固定長、各データ・バイト空間は等によって占有さの、すなわち長さ、最大長はID番号での使用に適した255文字、電話番号であります他の固定長の文字列
変数度VARCHAR、最大の長さを提供することができる。最大サイズは、可変長属性で使用するのに適した、65535バイトであり
、テキストの長さが設定されていない場合、属性の最大長さ適切なテキストと、知らない
6。BLOBTEXT別個のオブジェクト処理などの値。大きなデータを格納するために設計された文字列型は、それぞれ、バイナリおよび文字格納されています。
7. 列挙クラスは
時々 、代わりに通常の列挙クラスの文字列型で使用することができるMySQLの列挙型は非常にコンパクトに格納され、それが値のデータリスト内の1つのまたは2バイトに圧縮され、各意志内部のMySQL整数と.FRMファイルテーブルに格納されたリスト内の位置の値を保存する- 「数値文字列」の検索テーブルのマッピング関係

create table enum_test(e enum('fish','apple','dog') not null);--创建表字段为枚举类型
insert into enum_test(e) values('fish'),('dog'),('apple');--插入数据
select e+0 from enum_test;--查询
select * from enum_test where e = 0;--查询
select * from enum_test where e = 'fish';--查询

8.datetime和のタイムスタンプ
日時

8バイトの
タイムゾーンに関係なく、無効な日時のデータベース基礎となるタイムゾーンの設定
ミリ秒に保存されたが
、時間の広い範囲保存することができ
、日付文字列型を格納するためではない、大空間、タイプの日付の機能の喪失のしやすさを

タイムスタンプ

4つのバイト
時間:1970-01-01 2038年1月19日に
第二の正確
整数ストア
データベースの時間帯依存セットが
自動的にカラムのタイムスタンプ値を更新します

日付

バイトの数の比は、種類の唯一の3バイト、文字列、日時、INT少ないストレージが使用日を占有
日付型を使用しても、日付関数との間の日付と時刻を用いて算出することができる
1000-01-を格納する日付タイプを9999-12-31 01の間の日

パラダイムとカウンターパラダイム

あなたは厳密にパラダイムとカウンターパラダイム、実際のビジネスに基づいて実際の分析を遵守する必要はありません。必要な冗長フィールドは、関連するテーブルの多くを減らすことができます

パラダイム

利点:

パラダイムモデルの更新は、通常より速く、トランスよりも
優れたデータの正規化、ほとんど、またはデータの無重複がするとき
、データが比較的小さい正規化、メモリに配置することができますより速く動作させる
欠点:
通常関連付ける必要があります

アンチパラダイム

利点:

関連付けを回避するために、同じテーブル内のすべてのデータは、
効果的なインデックス設計することができます
:短所
表は、いくつかの有用な情報が失われる原因になりますとき、表中のより多くの冗長性、削除データを

選択したストレージエンジン

ストレージエンジン

適切な分割

このような大規模または大型タイプVARCHARのような大きなフィールドタイプのテキストフィールドは、このテーブルへのアクセスメインフィールドにアクセスしていない場合、それは別の別個のテーブルに破壊され、ストレージスペースを減らすために頻繁に使用されるデータによって占められます。
これは、増加される格納することができる各データ・ブロック内のデータ数は、IOの数は、物理的、キャッシュヒット率が改善されたメモリであってもよい減らすことができます。

おすすめ

転載: www.cnblogs.com/farmersun/p/12483816.html