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 エージェントのインストールと設定方法

推薦する

MySQL 8.0.12 のインストールと設定のチュートリアル

この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...

Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...

負荷分散の基礎知識とnginxを使用した負荷分散の簡単な例

Nginx は、一般的に 7 層の負荷分散に使用できます。この記事では、負荷分散に関する基本的な知識...

DockerとVMwareの競合を解決する

1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

Linux ソースコードの解析 epoll

目次1. はじめに2. シンプルなepollの例2.1、epoll_create 2.2、構造体イベ...

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...

vue3を使用してAppleシステムのサイドメッセージプロンプト効果を模倣する

目次アニメーションプレビューその他のUIライブラリ始めるコンポーネントディレクトリ構造トーストおおよ...

Vue は携帯電話の認証コードによるログインを実装します

この記事では、携帯電話認証コードログインを実装するためのVueの具体的なコードを参考までに共有します...

Linux の crontab タスク スケジューリングの簡単な分析

1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

ウェブデザインの達人がよく使うレスポンシブフレームワークを共有する(要約)

この記事では、Web デザインの達人がよく使用するレスポンシブ フレームワーク (概要) を紹介し、...

Docker ベースの nginx ファイル サーバーを構築する方法と手順

1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...

ElementUIはドロップダウンオプションと複数選択ボックスのサンプルコードを実装します

目次ドロップダウン複数選択ボックスアップグレード - すべてのオプションを追加改訂と改善を求める製品...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...