确认 MySQL 服务器的存储引擎的方法是什么?
首先
这完全是为了自己而建立的备忘录。
在年末年初有较多的时间,开始学习SQL和MySQL服务器,所以打算逐渐记录下所学的内容。
由于在互联网上已经有大量重复的笑话,所以这不仅是重复造轮子,更像是过剩生产轮子的感觉。但我加上了术语表和详细的命令执行结果,给人一种超值的感觉。
用語集的中文本土化翻譯
数据库管理系统:
MySQL和MariaDB等被称为DB服务器的中间件。
数据库:
表的集合。可以想象为Excel中的“工作簿”。
表:
结构化数据的集合。可以想象为Excel中的“工作表”。
请温柔地看待把Excel类比为例子的初学者。
SQL:
一种用于操作数据库管理系统的语言。
存储引擎:
一种用于读写表数据的机制。
即使在同一个数据库中,每个表也可以拥有不同的存储引擎。
关于存储引擎的内容可以再多说一点。
默认存储引擎
MySQL服务器的默认存储引擎由配置文件规定,如果配置文件中没有任何设置,则取决于版本。可以通过”show engines;”命令来确认。在下面的示例中,默认存储引擎是InnoDB。
MariaDB [(none)]> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| CSV | YES | CSV storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)
MariaDB [(none)]>
现有的表格存储引擎
绑定到已创建的Table的引擎保存在名为 information_schema 的数据库内的 table 表中。其中 table_schema 表示数据库名称,table_name 表示表名称,engine 表示使用的存储引擎名称。由于这样描述可能不太清楚,我们可以实际操作一下。
登录
[root@localhost ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
因为这是用来自学的,所以请以温和的眼光看待。
在Jinnai73_Qiita账户下创建一个名为Test1的项目。
MariaDB [(none)]> create database Jinnai73_Qiita;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Jinnai73_Qiita |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [(none)]> use Jinnai73_Qiita
Database changed
MariaDB [Jinnai73_Qiita]> create table Test1 (id int, name varchar(32));
Query OK, 0 rows affected (0.05 sec)
MariaDB [Jinnai73_Qiita]> show tables;
+--------------------------+
| Tables_in_Jinnai73_Qiita |
+--------------------------+
| Test1 |
+--------------------------+
1 row in set (0.00 sec)
MariaDB [Jinnai73_Qiita]>
完成了。
请确认存储引擎
MariaDB [Jinnai73_Qiita]> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [information_schema]> select table_schema, table_name, engine from tables where table_schema = 'Jinnai73_Qiita';
+----------------+------------+--------+
| table_schema | table_name | engine |
+----------------+------------+--------+
| Jinnai73_Qiita | Test1 | InnoDB |
+----------------+------------+--------+
1 row in set (0.00 sec)
MariaDB [information_schema]>
数据库已经正确地转换为InnoDB引擎。
最后
我计划在与其他学习同时,集中学习一段时间的SQL(和MySQL)。虽然之前一直有对数据库服务器感到害怕,但我发现学习SQL出乎意料地有趣。
(2017/5/20更新)
因为”SQL服务器”指的是微软产品”SQL Server”,所以我已经更正为”MySQL服务器”。非常感谢您的指正m(_ _)m