MySQLシリーズ-テーブルはどのように構成されていますか?

MySQLシリーズ-テーブルはどのように構成されていますか?

運営・維持管理YouthO&M Youth

一連の記事の説明

MySQLシリーズの記事には、ソフトウェアのインストール、特定の使用法、バックアップとリカバリなどが含まれ、主に個人の学習メモを記録するために使用されます。使用される主なMySQLバージョンは5.7.28で、サーバーシステムバージョンはCentOS7.5です。この章では、データベーステーブルの構成について詳しく説明します。

テーブルはどのように構成されていますか?

ユーザーは、指定したデータベースにデータテーブルを作成できます。データテーブルを作成するときは、テーブルの列名、列データ型、列属性、ストレージエンジン、および文字セット構成を指定する必要があります。

テーブル構成作成ステートメント


テーブルは、次のステートメントを使用して作成できます。


create table 表名(列名 列数据类型 列约束 列属性) engine=引擎 charset=字符集;

テーブル構成ストレージエンジン


データベースエンジンは、データの保存、処理、保護に使用されるコアサービスです。データベースエンジンを使用して、アクセス権を制御し、トランザクションを迅速に処理できるため、企業内で大量のデータを処理する必要があるほとんどのアプリケーションの要件を満たすことができます。データベースエンジンを使用して、オンライントランザクション処理またはオンライン分析とデータ処理用のリレーショナルデータベースを作成します。これには、データセキュリティを表示、管理、および保護するためのデータおよびデータベースオブジェクト(インデックス、ビュー、ストアドプロシージャなど)を格納するためのテーブルの作成が含まれます。

0 1どのようなストレージエンジンがありますか?


データベースでサポートされているストレージエンジンを確認するにはどうすればよいですか?


show engines;

02一般的に使用されるストレージエンジン


INNODB

  • InnoDBは、行レベルのロックと外部キー制約を備えたトランザクションストレージエンジンです。
    Innodbエンジンは、データベースACIDトランザクションのサポートを提供し、SQL標準の4つの分離レベルを実装します。このエンジンは、行レベルのロックと外部キーの制約も提供します。その設計目標は、大容量のデータベースシステムを処理することです。実際には、MySQLのバックグラウンドに基づく完全なデータベースシステムです。MySQLが実行されている場合、Innodbはバッファプールを作成します。バッファデータとインデックス用のメモリ内。ただし、エンジンはFULLTEXTタイプのインデックスをサポートしておらず、テーブルの行数を保存しません。SELECTCOUNT(*)FROM TABLEの場合、テーブル全体をスキャンする必要があります。データベーストランザクションを使用する必要がある場合は、もちろんこのエンジンが最初の選択肢です。ロックの粒度が小さいため、書き込み操作ではテーブル全体がロックされません。したがって、同時実行性が高い場合は、Innodbエンジンを使用すると効率が向上します。ただし、行レベルのロックの使用は絶対的なものではありません。SQLステートメントの実行時にMySQLがスキャンする範囲を決定できない場合、InnoDBテーブルはテーブル全体もロックします。

  • InnoDBの使用に適したシナリオ
    1)頻繁に更新されるテーブルは、複数の同時更新要求を処理するのに適しています。

2)事務をサポートします。

3)災害から回復することができます(bin-logログなどを介して)。

4)外部キーの制約。彼だけが外部キーをサポートしています。

5)列属性auto_incrementの自動追加のサポート。

MyISAM

MyIASMはMySQLのデフォルトエンジンですが、データベーストランザクションのサポートも、行レベルのロックと外部キーのサポートも提供していません。したがって、データのINSERT(挿入)またはUPDATE(更新)時に、書き込み操作でデータをロックする必要があります。テーブル全体、効率的ですそれは低くなります。

  • 該当するシナリオ
    1)トランザクションの設計はサポートされていませんが、トランザクション操作を伴うプロジェクトがMyIsamストレージエンジンを使用できないことを意味するわけではありません。ビジネスニーズに応じて、サービスレイヤーで対応する制御を実行できます。

2)外部キーをサポートしないテーブルデザイン。

3)クエリ速度は非常に高速であり、データベースの挿入および更新操作が多い場合に適しています。

4)テーブルが一日中ロックされているシナリオ。

5)MyISAMは、高速読み取り操作に重点を置いています。

6)テーブルの行数はMyIASMに格納されるため、SELECT COUNT(*)FROM TABLEの場合、テーブル全体のスキャンを実行せずに、保存された値を直接読み取るだけで済みます。テーブルに書き込み操作よりもはるかに多くの読み取り操作があり、データベーストランザクションのサポートを必要としない場合は、MyIASMも適切な選択です。

注:MyIASMストレージエンジンは、テーブルが損傷した後、テーブルをアクティブに修復できません。

選び方は?

1)信頼性が高い場合やトランザクション処理が必要な場合は、InnoDBを使用します。これは必須です。

2)テーブルの更新とクエリは非常に頻繁であり、テーブルがロックされる可能性は比較的高いため、InnoDBデータエンジンの作成を指定します。

3)MyIASMを選択して、いくつかのログや調査ビジネステーブルなどの多くのカウント計算を実行します。

4)挿入と変更は頻繁ではなく、MyIASMエンジンはクエリに対して非常に頻繁に選択されます。

0 3ストレージエンジンを設定、表示、変更するにはどうすればよいですか?


  • テーブルを作成するときは、engine = xxxを使用してテーブルストレージエンジンを指定します。

 create table yunweit1(id int) engine=innodb;
  • テーブルのストレージエンジンを表示する方法

show table status from 数据库名称; 

MySQLシリーズ-テーブルはどのように構成されていますか?

  • ストレージエンジンを変更する方法

 alter table yunweit1 engine='myisam';

  • テーブル作成用のデフォルトのストレージエンジンを指定する方法?mysqlテーブル作成用デフォルトのストレージエンジンはinnodbです。変更する必要がある場合は、my.iniファイルに次のフィールドを追加できます。

[mysqld]
default-storage-engine=xxx

テーブル構成文字セット


0 1MySQLで一般的に使用される文字セット

  • MySQLでサポートされているすべての文字セットを表示する

show charset;

MySQLシリーズ-テーブルはどのように構成されていますか?

02一般的に使用される文字セット


utf8

utf8はMysqlの文字セットであり、最大3バイトのUTF-8文字のみをサポートします。3バイトを超えると、エラーが報告されます。

utf8mb4

uft8mb4はutf8の補足拡張機能であり、uft8mb4は絵文字などの最大4バイトの文字をサポートできます。

おすすめ

転載: blog.51cto.com/15082392/2656133