博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql的存储引擎
阅读量:3967 次
发布时间:2019-05-24

本文共 2251 字,大约阅读时间需要 7 分钟。

1、完整的建表语句

CREATE TABLE `t_x` (  `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意:在MySQL当中,凡是标识符是可以使用飘号括起来的。最好别用,不通用。

建表的时候可以指定存储引擎,也可以指定字符集。
mysql默认使用的存储引擎是InnoDB方式。默认采用的字符集是UTF8

  • 在创建表时,可使用ENGINE项为CREATE TABLE语句显式指定存储引擎。
CREATE TABLE TABLENAME (NO INT) ENGINE = MyISAM;
  • 如果在创建表时没显式指定存储引擎,则该表使用当前默认的存储引擎
  • 默认的存储引擎可在my.ini配置文件中使用default-storage-engine项指定。
  • 现表的存储引擎可使用ALTER TABLE语句来改变:
ALTER TABLE TABLENAME ENGINE = INNODB;

2、什么是存储引擎呢?

存储引擎这个名字只有在mysql中存在。(Oracle中有对应的机制,但是不叫做存储引擎。Oracle中没有特殊的名字,就是“表的存储方式”)mysql支持很多存储引擎,每一个存储引擎都对应了一种不同的存储方式。每一个存储引擎都有自己的优缺点,需要在合适的时机选择合适的存储引擎。

3、查看当前mysql支持的存储引擎?

为确定某表所使用的存储引擎,可以使用SHOW CREATE TABLESHOW TABLE STATUS语句:

mysql> SHOW CREATE TABLE emp\G mysql> SHOW TABLE STATUS LIKE 'emp' \G

mysql 5.5.36版本支持的存储引擎有9个:FEDERATED、MRG_MYISAM、MyISAM、BLACKHOLE、 CSV、MEMORY、 ARCHIVE、InnoDB、PERFORMANCE_SCHEMA

4、常见的存储引擎?

4.1、MyISAM存储引擎

Engine: MyISAM

Support: YES
Comment: MyISAM storage engine
Transactions: NO//这种存储引擎不支持事务。
XA: NO
Savepoints: NO
特征

  • MyISAM这种存储引擎不支持事务
  • MyISAM是mysql最常用的存储引擎,但是这种引擎不是默认的。
  • MyISAM采用三个文件组织一张表:
    xxx.frm(存储格式的文件)
    xxx.MYD(存储表中数据的文件)
    xxx.MYI(存储表中索引的文件)

优点: 灵活的AUTO_INCREMENT字段处理可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率。

**缺点:**不支持事务。

4.2、InnoDB存储引擎

Engine: InnoDB

Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
优点: 支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。

  • 表的结构存储在xxx.frm文件中
  • 数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。
  • 这种InnoDB存储引擎在MySQL数据库崩溃之后提供自动恢复机制。
  • InnoDB存储引擎是MySQL的缺省引擎。

它管理的表具下列主要特征:

  • 每个InnoDB表在数据库目录中以.frm格式文件表示
  • InnoDB表空间tablespace被用于存储表的内容
  • 提供一组用来记录事务性活动的日志文件
  • 用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
    提供全ACID兼容
  • 在MySQL服务器崩溃后提供自动恢复
  • 多版本(MVCC和行级锁定
  • 支持外键及引用的完整性,包括级联删除和更新

4.3、MEMORY存储引擎

使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。

Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
缺点: 不支持事务。数据容易丢失。因为所有数据和索引都是存储在内存当中的。
优点: 查询速度最快。
以前叫做HEPA引擎。
MEMORY存储引擎管理的表具下列特征:

  • 在数据库目录内,每个表均以.frm格式的文件表示。
  • 表数据及索引被存储在内存中。
  • 表级锁机制。
  • 不能包含TEXT或BLOB字段。
  • MEMORY存储引擎以前被称为HEAP引擎。

5、选择合适的存储引擎

  • MyISAM表最适合于大量的数据读而少量数据更新的混合操作。MyISAM表的另一种适用情形是使用压缩的只读表。
  • 如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。
  • 可使用MEMORY存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

6、存储过程

在这里插入图片描述

转载地址:http://ixuki.baihongyu.com/

你可能感兴趣的文章
Flutter UI基础 - 层叠布局Stack的使用
查看>>
Flutter UI基础 - webview 使用和交互
查看>>
Flutter UI基础 - 时间选择器
查看>>
Idea - 创建Java类时,自动在文件头中添加作者和创建时间
查看>>
Docker - ASP.NET Core Docker部署
查看>>
Docker - 容器运行 .Net Core
查看>>
Django - TypeError: __init__() missing 1 required positional argument: ‘on_delete‘ 的解决办法
查看>>
Go - 解决 go get 超时问题
查看>>
Go - goose 数据库迁移工具
查看>>
SQL - SQL Server 之遍历数据集合的几种方法
查看>>
SQL - SQL Server 之处理JSON数据
查看>>
SQL - SQL Server 之ETL详解
查看>>
SQL - SQL Server 之Merge函数使用详解
查看>>
SQL - SQL Server 之WHILE循环的坑
查看>>
SQL - SQL Server中如何获取当前年,月,日,时,分,秒
查看>>
SQL - SQL Server 性能优化之SQL语句总结
查看>>
Docker - docker-compose常用命令
查看>>
SQL - SQL Server判断字符串中是否有中文
查看>>
SQL - SQL Server查询近7天的连续日期
查看>>
SQL - SQL Server中如何取年、月、日 -DATEPART函数
查看>>