mysql MyISAM和InnoDb存储引擎

1.show variables like ‘table_type’
2.show create table tbl_nm;/* 查看创表语句 */

存储引擎
1.MyISAM:
默认mysql存储引擎,不支持事务、也不支持外键,其优势是访
问的速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用基本上都可以使用
这个引擎来创建表
文件格式:
每个 MyISAM 在磁盘上存储成 3 个文件,其文件名都和表名相同,但扩展名分别是:
.frm(存储表定义);
.MYD(MYData,存储数据);
.MYI (MYIndex,存储索引(全文索引);
若MyISAM类型表损坏,可以使用CHECK TABLE检查表健康及REPAIR TABLE进行表修复;

MyISAM支持三种存储格式:
1.静态表(固定长度):默认存储格式
静态表中的字段都是非变长字段,这样每个记录都是
固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是
占用的空间通常比动态表多。静态表的数据在存储的时候会按照列的宽度定义补足空格,但
是在应用访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉
2.动态表:动态表中包含变长字段,记录不是固定长度的,这样存储的优点是占用的空间相对较少,但
是频繁地更新删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命
令来改善性能,并且出现故障的时候恢复相对比较困难
3.压缩表: myisampack 工具创建,占据非常小的磁盘空间。因为每个记录是被单独压缩的
所以只有非常小的访问开支

MyIsam只支持表级锁,对表数据做增删改查操作时,会自动对表进行加锁,所以不是大量数据修改情况,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据
MyISAM:保存有表的总行数,如果select count(*) from table;会直接取出出该值,因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读取出来;

Innodb除了支持表级锁外,还支持行级索,行级锁提高了并发
InnoDb存储引擎(mysql默认存储引擎):
提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比 MyISAM
的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引(插入数据或删除数据的同时也会维护索引树)

1.外键:mysql支持外键的只有InnoDb引擎;
外键注意点:主表要删除记录时,子表有对应记录则不允许删除;
主要要修改记录时,子表有对应记录,则子表也对应更新;
子表外键创建:constraint constraint_name forign key (son.column) preference father_tbl (father.column)
on delete restrict on update cascade;

如果表被其它表创建了外键参照,则该表对应的索引或主键禁止被删除;
在导表时,在load data , alter talbe 时可以暂时关闭外键:SET FOREIGN_KEY_CHECKS = 0
这样速度更快;执行完后更改回来SET FOREIGN_KEY_CHECKS = 1;

InnoDb存储格式
1.共享表空间存储:创建的表的表结构保存在.frm 文件中,数据和索引
保存在 innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中
2.多表空间存储:创建的表的表结构仍然保存在.frm 文件中,但是每个
表的数据和索引单独保存在.ibd 中

多表空间存储表删除和表导入
ALTER TABLE tbl_name DISCARD TABLESPACE;
恢复时只能是相同数据库
ALTER TABLE tbl_name IMPORT TABLESPACE;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值