第七章 2 各种存储引擎特性,innodb优点缺点;myisam 静态表会自动去除后面的空格;存储引擎 memory,存储引擎 merge 的创建和查询,

各种搜索引擎 特性图:

简单总结就是innodb 优点:支持事务,支持行级锁,支持集群索引,支持数据缓存;支持外键

innodb缺点:空间使用高,内存使用高,批量插入速度慢;

myisam 优点:访问速度快,支持全文索引,空间使用低,内存使用低;批量插入快

缺点:不支持外键,不支持事务;

 

 

想自己测试的话可以 通过命令修改 存储引擎后 看内存使用或者 数据文件的大小即可:比如我们 验证一下这个表格的 innodb 空间占用高;myisam空间使用低 是否正确:

innodb引擎下 数据文件 大小为 10M; alter table  biaoming  engine = myisam ;

后,数据文件 大小为 445 KB;  空间占用小了 20倍左右,【查看文件存储位置:show global variables like "%datadir%"

关于 内存,批量插入 不同引擎之间的区别的,可以自己测试一下;

 

 

需要特别注意的是 myisam 存储引擎,有 静态表,动态表,压缩表;三种类型;

静态表在存储数据时会自动补空格到固定长度;取数据时会去掉这些空格,所以 即使你专门的存储数据后带空格,在查询时也是会被丢弃的; 前面的空格会保留

 

innodb 自增涨列,插入0 或 空,会默认插入自增涨后的值;

alert table biaoming auto_increment = n ; 设置 自增涨列的值从N 开始;此设置在内存中,所以 重启数据库,需要重新设置;

last_insert_id() ;查看当前线程最后插入的值; 一条语句插入多条 数据情况下,查看的是 此语句的第一条数据 ;

存储引擎 memory 表的数据访问非常快,因为表数据全部在内存中;不会写到磁盘上,所以 重启会导致 memory的数据丢失;

momory 表默认大小限制为16M ;可以用 max_heap_table_size 修改;

memory 比较适合存储变化不大,或者 多张表的中间结果表;可以快速对中间表结果进行最终的统计结果;但必须要预防 重启后memory 的表数据全部会丢失;所以需要提前做好备份;

 

存储引擎 merge   是 将 多张myisam的表 组合成一张表;效果和查询多张表之后使用union all 类似,也类似 elasticsearch的对多个索引文件 起相同的别名 进行分组效果一样;

注意的是,merge的表 进行drop 操作,只会删除 组合表;不会删除内部的表数据;

操作尝试一下:

先创建3张test_log_2017/ test_log_2018/test_log_2019myisam的 表;并分别都插入一两条数据:

CREATE TABLE `test_log_2017` (
  `log_id` int(11) DEFAULT NULL,
  `CREATE_time` datetime DEFAULT NULL,
  `log_nm` varchar(80) DEFAULT NULL,
  KEY `idx_log_log_id` (`log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

 

创建表完成后,创建merge 表:insert_method = last/ first  是因为merge是虚拟的表,并没有真实数据;这个 参数指定insert语句这张表时,真实将数据 插入到第一张还是 最后一张表中;也可以为no;表示不能插入数据;

create table test_log_all2 (
log_id int ,
CREATE_time datetime ,
log_nm VARCHAR(80),
index (log_id)
)ENGINE = merge union = (test_log_2017,test_log_2018,test_log_2019)   insert_method = last;

创建完成之后 ,对表进行查询,结果就是 merge 引擎表 test_log_all2  是查询的所有的表的数据;

SELECT * from test_log_all2;

测试的merge 引擎只对 myisam  可以使用:虽然 其他引擎在创建merge表的时候,不会报错,但是在查询使用的时候回报错;如下图:创建 和 查询:

查询会报错:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值