MySQL圧縮を有効にする
圧縮テーブルを作成する前に、innodb_file_per_table構成オプションが有効になっていて、innodb_file_formatがBarracudaに設定されていることを確認してください。これらのパラメータは、MySQL構成ファイルmy.cnfまたはmy.iniにあるか、MySQLサーバーをシャットダウンせずにSETステートメントを使用して見つけることができます。
テーブルの圧縮を有効にするには、ROW_FORMAT =COMPRESSED、KEY_BLOCK_SIZE、またはその両方の句をCREATETABLEまたはALTERTABLEステートメントで使用できます。
圧縮されたテーブルを作成するためのステートメントを見てみましょう-
クエリ
SET GLOBAL innodb_file_per_table=1; SET GLOBAL innodb_file_format=Barracuda; CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
ここで
-
ROW_FORMAT =COMPRESSEDが指定されている場合、KEY_BLOCK_SIZEは省略できます。
-
デフォルトのページサイズ値が使用され、これはinnodb_page_size値の半分に相当します。
-
KEY_BLOCK_SIZEが指定されている場合、ROW_FORMAT=COMPRESSEDは省略できます。
-
圧縮は自動的に有効になります。
-
KEY_BLOCK_SIZE属性の最適な値を決定するには、ユーザーはこの句の値が異なる同じテーブルの複数のコピーを作成する必要があります。
-
これが完了したら、結果の.ibdファイルのサイズを測定し、それぞれが現実的なワークロードでどの程度うまく機能するかを判断します。
-
KEY_BLOCK_SIZE値はヒントと見なされます。
-
innodb_strict_mode =ONの場合、無効なKEY_BLOCK_SIZE値が指定されていると、エラーが返されます。
-
InnoDBデータページのデフォルトの非圧縮サイズは16KBと見なされます。オプション値の組み合わせに応じて、MySQLはテーブルの.ibdファイルに1KB、2KB、4KB、8KB、または16KBのページサイズを使用します。
-
実際の圧縮アルゴリズムは、KEY_BLOCK_SIZE値の影響を受けません。
-
クラスタ化インデックスを含むテーブルのすべてのインデックスは、CREATETABLEまたはALTERTABLEステートメントで指定された同じページサイズを使用して圧縮されます。 ROW_FORMATやKEY_BLOCK_SIZEなどのテーブル属性は、InnoDBテーブルのCREATEINDEX構文の一部とは見なされません。したがって、指定されている場合は無視されます。
-
MySQLテーブルに重複しない値を挿入します
重複しない値のみを挿入できるようにするには、UNIQUE制約を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable832( FirstName varchar(100), LastName varchar(100), UNIQUE(FirstName,LastName) ); Query OK, 0 rows affected (0.87 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into
-
MySQLテーブルのフィールド数を取得しますか?
MySQLのフィールド数を表示するには、COUNT(*)を使用します。以下は構文です- select COUNT(*) AS anyAliasName from INFORMATION_SCHEMA.COLUMNS where table_name = yourTableName AND TABLE_SCHEMA = yourDatabaseName; まずテーブルを作成しましょう- mysql> create table DemoTable794 ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName