mysql存儲引擎

'''
數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行建立、查詢、更新和刪除數據。
不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎,還能夠 得到特定的功能。
如今許多不一樣的數據庫管理系統都支持多種不一樣的數據引擎。MySQL的核心就是存儲引擎。
'''

1、常見存儲引擎簡介

'''
InnoDB:
    事務性數據庫的首選引擎,支持事務安全表(ACID),支持行鎖和外鍵

MyISAM:
    基於ISAM存儲引擎,並對其進行擴展。它是在web、數據倉儲和其餘應用環境下最長使用的存儲引擎之一。
    擁有較高的插入、查詢速度,但不支持事務
    支持表鎖
Memory:
    將表中的數據存儲到內存中,未查詢和引用其餘數據提供快速訪問
    每一個表能夠有多達32個索引,每一個索引16列,以及500字節的最大鍵長度
存儲引擎是基於表的,而不是基於庫的。因此存儲引擎也可被稱爲表類型。
'''

存儲引擎的特色及分類mysql

2、存儲引擎查看

一、查看數據庫支持的存儲引擎

show engines;web

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
View Code

二、查看當前數系統使用的存儲引擎

show variables like '%storage_engine%';sql

+----------------------------------+--------+
| Variable_name                    | Value  |
+----------------------------------+--------+
| default_storage_engine           | InnoDB |
| default_tmp_storage_engine       | InnoDB |
| disabled_storage_engines         |        |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
View Code

三、查看建表是使用的存儲引擎

show create table 表名;數據庫

*************************** 1. row ***************************
       Table: proxycode
Create Table: CREATE TABLE `proxycode` (
  `proxycode` int(10) unsigned NOT NULL COMMENT '合法代理編碼',
  PRIMARY KEY (`proxycode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
View Code

3、修改指定表的存儲引擎

使用ALERT TABLE修改表的存儲引擎可能致使數據庫中的數據丟失,因此在修改前,須要備份數據(通常不建議修改)安全

alter table 表名 engine=存儲引擎名稱app

mysql> alter table student engine=innodb
;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table student;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                      |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL DEFAULT '' COMMENT '姓名',
  `address` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
alter table student engine=innodb
相關文章
相關標籤/搜索