首页 > 数据库技术 > 详细

2018/09/07《涂抹MySQL》【引擎】学习笔记(四)

时间:2018-09-07 20:33:59      阅读:205      评论:0      收藏:0      [点我收藏+]

  第七章《引擎》

总结

 

1:什么是引擎?

  - 就是一种数据存取和处理方式

  - 在 MySQL 中,引擎是以"插件式"存在的,使我们可以很方便的使用各种引擎。

 

2:怎么查看支持的引擎?

  - show engines;

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| 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       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

  - Engine 引擎名称。

  - Support 当前是否支持该引擎

    - YES 支持,并处与可用状态

    - DEFAULT 支持并设置为默认引擎

    - NO 不支持

    - DISABLED 当前支持该引擎,但是被禁用

  - Comment 一些其他信息

  - Transactions 是否支持事务

  - XA 是否支持分布式

  - Savepoints 是否支持保存点

 

PS:写完了如何查看引擎之后,我们来学习下各个引擎可以做什么。

 

3:MEMORY 引擎

  - 顾名思义,内存引擎,避免IO消耗,直接读取内存。缺点也同理,服务重启/崩溃数据会被清空数据(保留表结构)。

  - 同样因为它的这种特性,可以存储一些(用户位置/在线类表)等不是需要持久化的,可以快速重建的数据。

  

  - 但是在实际中并不常用

    - 在使用 MEMORY 引擎时必须有足够大的内存,否则这些内存不会被回收,当写满了就会报错。

    - redis 在同量下比 MEMORY 做的更好。

    - 没有 reids 灵活,增大了维护的成本

 

4:ARCHIVE 引擎

  - 如其名--归档 引擎。能够将大量数据压缩存储(使用zlib无损压缩算法),极大的节省占空间。

  - 压缩能力有多好呢,这里插入了 10W条的单字段,占用也只有28K左右,可以是很好了建表语句

CREATE TABLE `archive` (
  `count` varchar(10000) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=utf8

查看占用 mysql
> show table status like archive \G; *************************** 1. row *************************** Name: archive Engine: ARCHIVE Version: 10 Row_format: Compressed Rows: 1048576 // 1058576 条 Avg_row_length: 0 Data_length: 29362 // 29362 / 1024 差不多占用28K

  - 但是,高压缩的同事也就代表了,他的缺点也很明显。

    - 目前只支持 INSERT/SELECT 不支持 DELETE/UPDATE等。

    - 支持 ORDER BY ,行级锁定,5.5之后支持索引。

  - 最出众的就是插入效率非常高,占用空间极小。

  - 从上面看来,这货就是为归档数据准备的,如果有历史数据需要归档处理(极少访问/不能删除),那么 ARCHIVE 是个不错的选择。

 

5:MyISAM

  - 5.5 之前的明星引擎。5.5 之后被 Inoodb 代替

  - 字符定义最大不超过 65532(全部引擎/字符集)。

  - 该引擎最大的优点查询快/写入快。

  - 缺点也是因为和 innodb 比较得来的

    - 锁颗粒太大,不支持事务,关键特性不给力....

  - 不过,这样不影响 myisam 是一个优秀的引擎,在具体的面上还时有他的应用场景的。

  - MyISAM 支持三种不同的存储格式

    - 静态(FIXED)  静态相对来说是最安全/最快的查找方式(通过定义varchar()成为静态表的,属于用空间换时间的策略)

    - 动态(DYNAMIC)  定义的字段中只要有 varchar()等动态定义的字段,这个表就会成为动态表(当然也可以通过 ROW_FORMAT=FIXED/DYNAMIC 动态指定)

    - 压缩(COMPRESSED)

 

6:Innodb 和 myisam 的区别

  - innodb支持事务,而myisam不支持

  - 如果有大量的select操作,请使用myisam。

  - 如果需要执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB。

  - Select count(*) from table Myisam会记录下来,Innodb会扫描全表(在有where条件下都一样)

  - myisam 表锁,基本行锁(如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表, 例如update table set num=1 where name like “%aaa%”)

  - MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用

  - 对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引 

  

2018/09/07《涂抹MySQL》【引擎】学习笔记(四)

原文:https://www.cnblogs.com/25-lH/p/9606637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!