MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違い

TEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は照合や文字セットなしでバイナリ データを格納するのに対し、TEXT 型は文字セットまたは照合を持つ点です。簡単に言えば、中国語を保存する場合はTEXTを選択します。

2. デフォルト値の問題

厳密モードではデフォルト値を設定することはできません。設定すると、「デフォルト値を持つことはできません」というエラー メッセージが表示されます。

mysql> テーブル `test`.`text_blob`( を作成します。 
 -> `a_text` テキスト デフォルト ' ' , 
 -> `b_blob` ブロブ 
 -> );
エラー 1101 (42000): BLOB/TEXT 列 'a_text' にはデフォルト値を設定できません

理由: https://www.jb51.net/article/181667.htm

select @@sql_mode; //表示モード

trict モードでは次の制限が適用されます。

1) NULLでないフィールドにNULL値を挿入することはサポートされていません

2) 自動増分フィールドに「値」を挿入することはできませんが、null値を挿入することはできます。

3). テキストフィールドのデフォルト値をサポートしていません

3. ソート

MySQL は、TEXT 列と BLOB 列を他の型とは異なる方法でソートします。つまり、文字列全体ではなく、各列の最初の max_sort_length バイトのみがソートされます。
デフォルト値は 1024 ですが、構成ファイルを通じて変更できます。

mysql> 'max_sort_length' のような変数を表示します。
+-----------------+-------+
| 変数名 | 値 |
+-----------------+-------+
| 最大ソート長 | 1024 |
+-----------------+-------+
セット内の 1 行 (0.00 秒)

4. プレフィックスインデックスを作成する

通常は、先頭の文字をインデックスとして設定するのが最適です。これにより、インデックス スペースが大幅に節約され、インデックスの効率が向上します。

テーブルtable1を変更し、キー(text1(1024))を追加します。

知識ポイントの拡張:

MySQLフィールド設計仕様ではTEXT/BLOBデータ型の使用を避ける

1. 説明

休暇中に時間があれば、いくつかのテーブルの設計を見てみれば、多くの問題が見つかるでしょう。古いシステムには 100 を超えるフィールドがあり、その中には中程度のテキストが多く、データ量は 500 万未満です。開発仕様では、テーブル設計は 500 万のデータ量を超えてはならないと規定されています。テーブルが占めるディスク容量を確認したところ、120G でした。これは間違いなく大きなテーブルであり、最初に設計されたときには設計でこの点は考慮されていませんでした。一言で言えば、オンラインで機能する限り、誰が気にするでしょうか?

MySQL 仕様

1. 1 つのテーブルには 500 万件を超えるレコードを含めないでください。同時に、1 つのテーブルが占有するディスク領域は 50G を超えてはなりません。それ以外の場合は、最適化とテーブルのパーティション分割を検討してください。

2. テキスト フィールド タイプを無効にします。これを使用する必要がある場合は、別のテーブルも設計する必要があります。

3. テキストフィールドタイプを無効にする理由

1. パフォーマンスが非常に悪い。ソートなどの操作を実行する場合、メモリ内の一時テーブルは使用できず、ディスク上の一時テーブルを使用する必要があります。

2. TEXT または BLOB 型ではプレフィックス インデックスのみを使用でき、MySQL ではインデックス フィールドの長さに制限があります。

4. 解決策

標準を設定し、それを厳格に施行します (実装は困難です)。1 人または 2 人の DBA が、数十または数百のビジネス システム、数万のテーブル、数百万のフィールドを手動で確認することは不可能です。最終的には、インテリジェントな監査システムに依存します。

MySQL で TEXT/BLOB 型を使用する際の注意点について詳細に解説したこの記事はこれで終了です。MySQL で TEXT/BLOB 型を使用する際のより詳しい情報については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の TEXT フィールドと BLOB フィールドの違い
  • MySQL の BLOB およびテキスト データ型の詳細な説明

<<:  WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

>>:  Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

推薦する

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

Nginx 構成 80 ポート アクセス 8080 とプロジェクト名アドレス メソッド分析

Tomcatはプロジェクトにアクセスします。通常はIP + ポート + プロジェクト名です。 Ngi...

Zabbix上のすべてのホストのIPとホスト名を取得する

ザビックスZabbix ([`zæbiks]) は、WEB インターフェースに基づいて分散システム監...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

Linux で MySQL 5.6 X64 バージョンをインストールする詳細な手順

環境: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-glibc2.5...

Linux で pip 操作中にタイムアウトが発生する問題を解決する方法

Linuxインスタンスでpipを使用する際のタイムアウト問題を解決する方法pip は最も人気のある ...

Docker初心者が初めてよく使うコマンドを試してみる練習記録

Docker を正式に使用する前に、まず Docker でよく使用されるコマンドに慣れておきましょう...

Nginx ドメイン名の書き換えとワイルドカードドメイン名の解決を設定する方法

この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...

Docker Consul の概要とクラスター環境構築手順(グラフィカルな説明)

目次1. Dockerコンサルの概要2. nginxとconsulをベースにした自動検出と高可用性の...

MySQL データベースのホットスタンバイにおける問題点の分析

以前、MySQL データベースのデュアルマシン ホット スタンバイの設定方法を紹介しました。ご興味の...

要素内の TimePicker は時間の一部を無効にします (分単位で無効)

プロジェクトの要件は、日付と時刻を選択し、現在の時刻以降の時刻のみを選択し、最小レベルを分単位で無効...

コンテンツの位置をランダムにドラッグするHTMLを実装する2つの方法

テスト: Chrome v80.0.3987.122 は正常です方法は2つあります。通常のラベルの位...

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

ルートパスワードを変更するための MySQL 設定、MySQL サーバー接続、MySQL 共通コマンド図

1. ルートパスワードの設定と変更mysql が起動しているかどうかを確認します。起動していない場合...

MySql ビュー トリガー ストアド プロシージャの詳細な説明

ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...