CC00141.bigdatajava——|Java&MySQL.高级.V13|——|MySQL.v13|常见三种存储引擎|

一、[常见的三种存储引擎]:存储引擎
### --- 常见的3种存储引擎
### --- 查看MySQL数据的存储引擎有哪些

~~~     # MySQL给用户提供了很多种类的存储引擎, 主要分两大类:
——>        事务安全表: InnoDB
——>        非事务安全表: MyISAM、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。
SHOW ENGINES;

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| 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         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
### --- 查看当前的默认存储引擎 (MySQL5.7 默认使用 InnoDB)

SHOW VARIABLES LIKE '%default_storage_engine%';

mysql> SHOW VARIABLES LIKE '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
### --- 在MySQL中,不需要整个服务器都是用同一种引擎,针对具体的需求,
~~~     可以对 每一个表使用不同的存储引擎 .并且想要进一步优化, 还可以自己编写一个存储引擎.

-- 创建新表时指定存储引擎
create table(...) engine=MyISAM;
二、InnoDB(推荐)
### --- InnoDB

——>        InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,
——>        为用户操作非常大的数据存储提供了一个强大的解决方案。
——>        InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择
### --- 优点

——>        Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别
——>        支持多版本并发控制的行级锁,由于锁粒度小,写操作和更新操作并发高、速度快。
——>        支持自增长列。
——>        支持外键。
——>        适合于大容量数据库系统,支持自动灾难恢复。
### --- 缺点

——>        它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表
### --- 应用场景

——>        当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率
——>        更新密集的表, InnoDB存储引擎特别适合处理多重并发的更新请求。
三、 MyISAM
### --- My了SAM

——>        MyISAM引擎, 不支持事务、也不支持外键,优势是访问速度快,
——>        对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表
### --- 优点

——>        MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服器。
——>        MyISAM存储引擎在查询大量数据时非常迅速,这是它最突出的优点
——>        另外进行大批量插入操作时执行速度也比较快。
### --- 缺点

——>        MyISAM表没有提供对数据库事务的支持。
——>        不支持行级锁和外键。
——>        不适合用于经常UPDATE(更新)的表,效率低。
### --- 应用场景

——>        以读为主的业务,例如:图片信息数据库,博客数据库,商品库等业务。
——>        对数据一致性要求不是非常高的业务(不支持事务)
——>        硬件资源比较差的机器可以用 MyiSAM (占用资源少)
四、MEMORY
### --- MEMORY

——>        MEMORY的特点是 将表中的数据放在内存中,适用于存储临时数据的临时表和数据仓库中的纬度表
### --- 优点

——>        memory类型的表访问非常的快,因为它的数据是放在内存中的
### --- 缺点

——>        一旦服务关闭,表中的数据就会丢失掉。
——>        只支持表锁,并发性能差,不支持TEXT和BLOB列类型,存储varchar时是按照char的方式
### --- 应用场景

——>        目标数据较小,而且被非常频繁地访问。
——>        如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。
——>        存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。
五、如何选择存储引擎
### --- 如何选择存储引擎

~~~     不同的存储引擎都有各自的特点,以适应不同的需求,如表所示。
~~~     为了做出选择,首先要考虑每一个存储引擎提供了哪些不同的功能。
特性InnoDBMyISAMMEMORY
存储限制(Storage limits)64TBNoYes
支持事物(Transactions)YesNoNo
锁机制(Locking granularity) 行锁表锁表锁
B树索引(B-tree indexes)YesYesYes
哈希索引(Hash indexes)YesNoYes
外键支持(Foreign key support) YesNoNo
存储空间消耗(Storage Cost) 
内存消耗(Memory Cost)
批量数据写入效率(Bulk insert speed)
### --- 提供几个选择标准,然后按照标准,选择对应的存储引擎

——>        是否需要支持事务;
——>        崩溃恢复,能否接受崩溃;
——>        是否需要外键支持;
——>        存储的限制;
——>        对索引和缓存的支持;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值