MySQL InnoDBとMyISAMの違いを簡単に理解する

MySQL InnoDBとMyISAMの違いを簡単に理解する

序文

MySQL は、myisam、innodb、memory、archive、example など、多くの種類のテーブル (つまり、ストレージ エンジン) をサポートしています。各ストレージ エンジンにはそれぞれ長所と短所があります。各ストレージ エンジンを十分に理解することで、それらを適切に使用できるようになります。同じデータベースで複数のストレージ エンジンを使用するとパフォーマンスに大きな影響が出ると考える人もいます。実際、これはまったく間違った考えです。実際、非常に単純なデータベースでない限り、1 つのストレージ エンジンのみを使用することは、アプリケーションのパフォーマンスにとって非常に悪い動作です。データベースを理解している人は、各テーブルのさまざまな機能に基づいて適切なストレージ エンジンを選択します。これが正しいアプローチです。

先ほども述べたように、MySQL には多くのストレージ エンジンがありますが、私が個人的に仕事で最もよく使用するストレージ エンジンは 2 つあります。1 つは InnoDB、もう 1 つは MyISAM です。ここでは、これら 2 つのストレージ エンジンについて説明し、それらの違いを比較します。

1. マイISAM

MyISAM は現在、MySQL のデフォルトのストレージ エンジンです。テーブルの作成時にテーブル タイプを指定しない場合、MySQL はデフォルトで MyISAM を使用します。 MyISAM には、多くの人が非常に重要だと考えているが、役に立たないと思う機能があります。それは、MyISAM がオペレーティング システムからの独立性を表すという機能です。簡単に言えば、MyISAM テーブルを Windows から Linux へ、または Linux から Windows へ簡単に移行できます。これは確かに利点ですが、一定期間 1 つのオペレーティング システムを使用することを決定した後で、サーバーのオペレーティング システムを変更するほど愚かなテクニカル ディレクターがいるでしょうか。したがって、この利点には実質的な意味はないと思います。

MyISAM ストレージ エンジンは、MySQL コンポーネントの非常に重要な部分です。MySQL では、静的、動的、圧縮の 3 種類の MyISAM 形式テーブルを作成できます。形式を別途指定する必要はなく、MySQL はテーブル構造に基づいて最も適切な形式を自動的に選択します。

1. MyISAM 静的

テーブル内の各フィールドのデータ型定義が静的 (char など) である場合、MySQL は自動的に静的 MyISAM 形式を使用します。この形式のテーブルのパフォーマンスは非常に高く、クエリと更新にかかる時間は非常に短くなりますが、スペースを犠牲にする必要があることに注意してください。各列に最大スペースが割り当てられるため、スペースの一部が使用されていない場合でも、静的テーブルがより大きなスペースを占有することになります。

2. MyISAM ダイナミクス

テーブル内の各フィールドのデータ型定義が動的 (varchar など) である場合、MySQL は自動的に動的 MyISAM 形式を使用します。このタイプの形式のテーブルのパフォーマンスは低下しますが、スペースの占有量は静的なテーブルよりもはるかに少なくなります。

3. MyISAM 圧縮

読み取り専用に設計されたテーブルがある場合は、MyISAM を使用してテーブルを圧縮できます。同じ構成では、パフォーマンスが最も速くなります。

2. バイナリ

InnoDB は、デフォルトでトランザクションをサポートするトランザクション ストレージ エンジンです。そのため、銀行関連のプロジェクトなど、データの整合性に対する要件が高いプロジェクトでは、InnoDB がストレージ エンジンとして使用されます。 InnoDB では行レベルのロックも導入されています。その他のテーブル タイプはすべて完全にロックされます。つまり、ユーザーがテーブル内の自分の行の特定の情報を変更したい場合、データベースはまずテーブル全体をロックし、他のユーザーはこのテーブルを操作できなくなります。これが完全なテーブル ロックです。行レベルのロックは異なります。変更する行のみがロックされます。つまり、他の人はテーブルを操作できますが、ロックされた行のデータを操作することはできません。メリットは明らかです。より高速で、複数の同時更新要求を処理するのに特に適しています。

InnoDB では外部キー制約も導入されています。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL MyISAM と InnoDB の違い
  • MySQLでデータテーブルを作成するときにエンジンMyISAM/InnoDBを設定する
  • MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要
  • MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ
  • MySQLストレージエンジンのMyISAMとInnoDBの違いを詳しく説明
  • MySQL エンジンを変更する方法 (InnoDB、MyISAM)
  • MySQL データベースの修復方法 (MyISAM/InnoDB)
  • Mysql InnoDBとMyISAMの違いの分析

<<:  Ubuntu20.04 VNCのインストールと設定の実装

>>:  MySQL の中国語文字化け問題の解決方法

推薦する

Javascriptの基礎を学ぶための10の重要な質問

目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...

外部ネットワークアクセスを許可するためのMysql5.6の設定手順の詳細を共有する

最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...

Linux ソースコードの解析 epoll

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

MySQL実行計画の詳細な説明

EXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情報を提供します...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

Nginx の動的および静的分離実装ケースのコード分析

静的と動的の分離動的リクエストと静的リクエストはミドルウェアを通じて分離され、不要なリクエストの消費...

Vueスロットの実装原理についての簡単な説明

目次1. サンプルコード2. 現象を通して本質を見抜く3. 実施原則4. 親コンポーネントのコンパイ...

HTML で複数のフォームのテキスト ボックスを揃える方法

フォームのコードは図の通りです。スタイルシートがまだ追加されていないため、フォームが整列されておらず...

Linux オペレーティング システムでよく使用される MySQL コマンドの概要

以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

nginx 用の zabbix 5.0 をインストールして展開する方法

目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

mysqlとnavicat間の接続を確立する際の1251エラーを解決する

コンピュータを再インストールし、最新バージョンのMySQLデータベースをインストールしました。その結...

CentOS7 カーネル カーネル5.0 バージョンアップグレード

アップグレードプロセス:元のシステム: CentOS7.3 [root@my-e450 ~]# un...

Docker イメージを削除できません エラー: そのようなイメージはありません: xxxxxx 解決策

序文docker イメージを削除できません。docker docker imagesを確認すると、イ...