目次
mysql存储引擎(二)
MEMORY
MERGE
BerkeleyDB存储引擎

mysql存储引擎(二)

Jun 07, 2016 pm 02:51 PM
memory mysql ストレージ エンジン

mysql存储引擎(二) mysql存储引擎二 MEMORY MERGE BerkeleyDB存储引擎 MEMORY MEMORY存储引擎通过采用内存中的内容来创建表。每个Memory表实际上和一个磁盘文件关联起来,文件名采用”表名.frm”的格式。Memory类型的表访问速度极快,因为数据源来自内存,

mysql存储引擎(二)


      • mysql存储引擎二
        • MEMORY
        • MERGE
        • BerkeleyDB存储引擎

MEMORY

MEMORY存储引擎通过采用内存中的内容来创建表。每个Memory表实际上和一个磁盘文件关联起来,文件名采用”表名.frm”的格式。Memory类型的表访问速度极快,因为数据源来自内存,所以数据库关闭时,内存中的数据就会发生丢失。默认使用Hash索引。

<code class=" hljs asciidoc">mysql> create table memory<span class="hljs-emphasis">_table( id int primary key, name varchar(20) )engine=memory;
Query OK, 0 rows affected (0.02 sec)

</span>mysql> insert into memory<span class="hljs-emphasis">_table(id,name) values(2,'frank');
Query OK, 1 row affected (0.00 sec)

</span><span class="hljs-header">mysql> select * from memory_table;
+----+-----------+</span>
<span class="hljs-header">| id | name      |
+----+-----------+</span>
|  1 | frankstar |
<span class="hljs-header">|  2 | frank     |
+----+-----------+</span>
2 rows in set (0.00 sec)

mysql> show table status like <span class="hljs-emphasis">'memory_table'</span> \G;
<span class="hljs-bullet">*************************** </span>1. row ***************************
<span class="hljs-code">           Name: memory_table</span>
<span class="hljs-code">         Engine: MEMORY</span>
<span class="hljs-code">        Version: 10</span>
<span class="hljs-code">     Row_format: Fixed</span>
<span class="hljs-code">           Rows: 2</span>
<span class="hljs-code"> Avg_row_length: 66</span>
<span class="hljs-code">    Data_length: 127008</span>
Max<span class="hljs-emphasis">_data_</span>length: 12582900
<span class="hljs-code">   Index_length: 126992</span>
<span class="hljs-code">      Data_free: 0</span>
<span class="hljs-code"> Auto_increment: NULL</span>
<span class="hljs-code">    Create_time: 2016-05-09 22:23:47</span>
<span class="hljs-code">    Update_time: NULL</span>
<span class="hljs-code">     Check_time: NULL</span>
<span class="hljs-code">      Collation: utf8_bin</span>
<span class="hljs-code">       Checksum: NULL</span>
<span class="hljs-code"> Create_options:</span>
<span class="hljs-code">        Comment:</span>
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> show index from memory<span class="hljs-emphasis">_table \G;
*************************** 1. row ***************************
        Table: memory_</span>table
<span class="hljs-code">   Non_unique: 0</span>
<span class="hljs-code">     Key_name: PRIMARY</span>
<span class="hljs-code"> Seq_in_index: 1</span>
<span class="hljs-code">  Column_name: id</span>
<span class="hljs-code">    Collation: NULL</span>
<span class="hljs-code">  Cardinality: 2</span>
<span class="hljs-code">     Sub_part: NULL</span>
<span class="hljs-code">       Packed: NULL</span>
<span class="hljs-code">         Null:</span>
<span class="hljs-code">   Index_type: HASH</span>
<span class="hljs-code">      Comment:</span>
Index<span class="hljs-emphasis">_comment:
1 row in set (0.00 sec)

</span>ERROR:
No query specified
</code>
ログイン後にコピー

memory表的内存储存在内存中,如果表的数据很大,那么服务器将会自动将其转换为磁盘表,阀值由temp_table_size系统变量来确定。每个memory表的容量由max_heap_table_size变量的值控制。默认16MB。
主要用于数据内容变化不频繁的代码表及访问速度要求较高、数据量不大的场合,同时需要考虑更新操作数据不回写入到磁盘文件中。

MERGE

它实际上是一组myisam表的组合,将一组结构相同的MyISAM表组合在一起,MERGE表本身没有数据,对于该类型表的插入操作,是通过INSERT_METHOD定义完成的,取值为LAST或者为FIRST,FIRST意味着数据增加到组合表中的第一个myisam表中,同理LAST意味着添加到最后一个表中。所以MERGE表的文件有2个,一个是.frm文件,用于存放数据,还有一个MRG文件,用于存放MERGE表的名称,包括其组成表。

如下:

<code class=" hljs haml">mysql> create table myisam_table1(
    -<span class="ruby">> id int primary key,
</span>    -<span class="ruby">> data datetime
</span>    -<span class="ruby">> )engine=myisam;
</span>Query OK, 0 rows affected (0.02 sec)

create table myisam_table2( id int primary key, data datetime )engine=myisam;
Query OK, 0 rows affected (0.01 sec)

mysql> create table table1_merge_table2(
    -<span class="ruby">> id int primary key,
</span>    -<span class="ruby">> data datetime
</span>    -<span class="ruby">> )engine=merge union=(myisam_table1,myisam_table2) insert_method=first;
</span>Query OK, 0 rows affected (0.01 sec)</code>
ログイン後にコピー

向2个字表分别添加数据,如下:

<code class=" hljs cs">mysql> insert <span class="hljs-keyword">into</span> myisam_table1 values(<span class="hljs-number">1</span>,<span class="hljs-string">'2016-5-7'</span>);
Query OK, <span class="hljs-number">1</span> row affected (<span class="hljs-number">0.00</span> sec)

mysql> insert <span class="hljs-keyword">into</span> myisam_table1 values(<span class="hljs-number">2</span>,<span class="hljs-string">'2016-5-6'</span>);
Query OK, <span class="hljs-number">1</span> row affected (<span class="hljs-number">0.00</span> sec)

mysql> insert <span class="hljs-keyword">into</span> myisam_table2 values(<span class="hljs-number">1</span>,<span class="hljs-string">'2016-5-7'</span>);
Query OK, <span class="hljs-number">1</span> row affected (<span class="hljs-number">0.00</span> sec)

mysql> insert <span class="hljs-keyword">into</span> myisam_table2 values(<span class="hljs-number">2</span>,<span class="hljs-string">'2016-5-6'</span>);
Query OK, <span class="hljs-number">1</span> row affected (<span class="hljs-number">0.00</span> sec)
</code>
ログイン後にコピー

查询merge表,如下:

<code class=" hljs asciidoc"><span class="hljs-header">mysql> select * from table1_merge_table2;
+----+---------------------+</span>
<span class="hljs-header">| id | data                |
+----+---------------------+</span>
|  1 | 2016-05-07 00:00:00 |
|  2 | 2016-05-06 00:00:00 |
|  1 | 2016-05-07 00:00:00 |
<span class="hljs-header">|  2 | 2016-05-06 00:00:00 |
+----+---------------------+</span>
4 rows in set (0.01 sec)</code>
ログイン後にコピー

向merge表中添加一条数据,如下:

<code class=" hljs asciidoc">mysql> insert into table1<span class="hljs-emphasis">_merge_</span>table2 values(3,<span class="hljs-emphasis">'2016-5-8'</span>);
Query OK, 1 row affected (0.00 sec)

<span class="hljs-header">mysql> select * from table1_merge_table2;
+----+---------------------+</span>
<span class="hljs-header">| id | data                |
+----+---------------------+</span>
|  1 | 2016-05-07 00:00:00 |
|  2 | 2016-05-06 00:00:00 |
|  3 | 2016-05-08 00:00:00 |
|  1 | 2016-05-07 00:00:00 |
<span class="hljs-header">|  2 | 2016-05-06 00:00:00 |
+----+---------------------+</span>
5 rows in set (0.00 sec)


<span class="hljs-header">mysql> select * from myisam_table1;
+----+---------------------+</span>
<span class="hljs-header">| id | data                |
+----+---------------------+</span>
|  1 | 2016-05-07 00:00:00 |
|  2 | 2016-05-06 00:00:00 |
<span class="hljs-header">|  3 | 2016-05-08 00:00:00 |
+----+---------------------+</span>
3 rows in set (0.00 sec)

<span class="hljs-header">mysql> select * from myisam_table2;
+----+---------------------+</span>
<span class="hljs-header">| id | data                |
+----+---------------------+</span>
|  1 | 2016-05-07 00:00:00 |
<span class="hljs-header">|  2 | 2016-05-06 00:00:00 |
+----+---------------------+</span>
2 rows in set (0.00 sec)</code>
ログイン後にコピー

INSERT_METHOD的指定起作用了,如果没有指定,那么当试图往Merge表中insert数据时,都会发生错误。通常使用merge表来透明的对多个表进行查询和更新。

BerkeleyDB存储引擎

简称BDB,创建该类型的表时,会有2个数据文件,一个.frm文件存储表元数据,另一个.db文件存储数据和索引文件,类似innodb。它的实现事务安全有redo日志。在每次启动的时候,都会做一次检查操作,将所有的redo日志清空。它和Memory引擎一样,都是页级锁定。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

SQLが行を削除した後にデータを回復する方法 SQLが行を削除した後にデータを回復する方法 Apr 09, 2025 pm 12:21 PM

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

See all articles