MySQL TEXT/BLOBタイプを使用した知識点詳細
一、TEXTとBLOBの違い
TEXTとBLOB家族の間の唯一の違いは、BLOBタイプが記憶しているのはバイナリデータであり、並べ替え規則や文字セットはなく、TEXTタイプは文字セットや並べ替え規則があります。はっきり言って、中国語を貯蔵するなら、TEXTを選択します。
二、標準値問題
Strict Modeではデフォルト値を設定できません。そうでないとcan't have a default valueにエラーが発生します。
select@@sql_モード表示モード
trict Modeには以下の制限があります。
1)not nullフィールドにnull値を挿入することはサポートされていません。
2)自己成長フィールドに「値を挿入することはサポートされていません。null値を挿入できます。
3)textフィールドがサポートされていません。標準値があります。
三、並べ替え
MySQLがTEXTとBLOB列を並べ替えるのは他のタイプとは違っています。各列の先頭max_のみです。sort_文字列全体の並べ替えではなく、レングスバイトです。
デフォルトは1024です。設定ファイルで変更できます。
インデックスとしての最初の部分の文字を設定すると、インデックスのスペースが大幅に節約され、インデックス効率が向上します。
MySQLフィールド設計規範TEXT/BLOBデータタイプの使用を避ける
説明する
休みの時、多くの時計のデザインを見に行きます。多くの問題を発見しました。古いシステムの上では100を超えるフィールドがあります。中には大量のメディumtextが含まれています。500万に満たないデータ量があります。開発規範の中には500万のデータ量を超えないように設計する必要があります。テーブルが占有しているディスク空間120 Gを確認しましたが、間違いなく大時計です。設計当初は設計を考えたことがありませんでした。一つの言葉がオンラインで使えばいいです。彼を管理します。
二、MySQL仕様
1、単表は500万本の記録を超えないでください。同時に単表が占有するディスクの空間を評価して50 Gを超えないでください。でないと、最適化、分表などを考慮します。
2、textフィールドタイプを無効にし、必要な場合は、単独でテーブルを設計する必要があります。
三、textフィールドタイプを無効にする理由
1、性能が悪い、並べ替えなどの操作は、メモリ一時テーブルを使用することができません。ディスク一時テーブルを使用して行わなければなりません。
2、TEXTまたはBLOBタイプは、プレフィックスインデックスしか使用できません。MySQLはインデックスフィールドの長さに制限があります。
四、解決方法
規則を決めて、厳格に実行します(実行するのは難しいです)、1つか2つのDBAは数十百以上の業務システムに直面して、数万の時計、上の百万のフィールドはすべての表とフィールドを通じて人工的に審査するのは完成することができなくて、最後にやはり知能化の審査システムによってです!
ここで、MySQLはTEXT/BLOBタイプの知識点を使って詳しく説明した文章をここに紹介します。さらにMySQLはTEXT/BLOBタイプのいくつかの注意事項を使って、私達の以前の文章を検索してください。または、下の関連記事を引き続きご覧ください。これからもよろしくお願いします。
TEXTとBLOB家族の間の唯一の違いは、BLOBタイプが記憶しているのはバイナリデータであり、並べ替え規則や文字セットはなく、TEXTタイプは文字セットや並べ替え規則があります。はっきり言って、中国語を貯蔵するなら、TEXTを選択します。
二、標準値問題
Strict Modeではデフォルト値を設定できません。そうでないとcan't have a default valueにエラーが発生します。
mysql> create table `test`.`text_blob`(
-> `a_text` text DEFAULT ' ' ,
-> `b_blob` blob
-> );
ERROR 1101 (42000): BLOB/TEXT column 'a_text' can't have a default value
原因:https://www.jb51.net/article/181667.htmselect@@sql_モード表示モード
trict Modeには以下の制限があります。
1)not nullフィールドにnull値を挿入することはサポートされていません。
2)自己成長フィールドに「値を挿入することはサポートされていません。null値を挿入できます。
3)textフィールドがサポートされていません。標準値があります。
三、並べ替え
MySQLがTEXTとBLOB列を並べ替えるのは他のタイプとは違っています。各列の先頭max_のみです。sort_文字列全体の並べ替えではなく、レングスバイトです。
デフォルトは1024です。設定ファイルで変更できます。
mysql> SHOW VARIABLES LIKE 'max_sort_length';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_sort_length | 1024 |
+-----------------+-------+
1 row in set (0.00 sec)
四、プレフィックス索引の作成インデックスとしての最初の部分の文字を設定すると、インデックスのスペースが大幅に節約され、インデックス効率が向上します。
alter table table1 add key (text1(1024));
知識点拡張:MySQLフィールド設計規範TEXT/BLOBデータタイプの使用を避ける
説明する
休みの時、多くの時計のデザインを見に行きます。多くの問題を発見しました。古いシステムの上では100を超えるフィールドがあります。中には大量のメディumtextが含まれています。500万に満たないデータ量があります。開発規範の中には500万のデータ量を超えないように設計する必要があります。テーブルが占有しているディスク空間120 Gを確認しましたが、間違いなく大時計です。設計当初は設計を考えたことがありませんでした。一つの言葉がオンラインで使えばいいです。彼を管理します。
二、MySQL仕様
1、単表は500万本の記録を超えないでください。同時に単表が占有するディスクの空間を評価して50 Gを超えないでください。でないと、最適化、分表などを考慮します。
2、textフィールドタイプを無効にし、必要な場合は、単独でテーブルを設計する必要があります。
三、textフィールドタイプを無効にする理由
1、性能が悪い、並べ替えなどの操作は、メモリ一時テーブルを使用することができません。ディスク一時テーブルを使用して行わなければなりません。
2、TEXTまたはBLOBタイプは、プレフィックスインデックスしか使用できません。MySQLはインデックスフィールドの長さに制限があります。
四、解決方法
規則を決めて、厳格に実行します(実行するのは難しいです)、1つか2つのDBAは数十百以上の業務システムに直面して、数万の時計、上の百万のフィールドはすべての表とフィールドを通じて人工的に審査するのは完成することができなくて、最後にやはり知能化の審査システムによってです!
ここで、MySQLはTEXT/BLOBタイプの知識点を使って詳しく説明した文章をここに紹介します。さらにMySQLはTEXT/BLOBタイプのいくつかの注意事項を使って、私達の以前の文章を検索してください。または、下の関連記事を引き続きご覧ください。これからもよろしくお願いします。