Mysql高级-概述

Mysql的数据用各种不同的技术存储在文件中。这些技术中的每一种技术都使用不同的存储机制、索引技术、锁定水平,并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。

这些不同的技术以及配套的相关功能在MySql中被称作存储引擎(也称作表类型)。MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用。你可以选择适合于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。

 查看支持的存储引擎
show engines;

image-20210802101804093

查看表引擎
show table status like'表名'

image-20210802102132688

修改引擎
方式1:将mysql.ini 中设置为 default-storage-engine=InnoDB 重启服务
方式2:建表时指定 create table 表名(...)engine=MYISAM;
方式3:建表后修改 alter table 表名 engine = InniDB;

存储引擎主要有:

MyIsam、InnoDB、Memory、Blackhole、CSV、Performance_Schema、Archive、Federated、Mrg_Myisam。

在这里我主要分析使用MyIsam和InnoDB。

image-20210802102740753

InnoDB

InnoDB是MySql默认的存储引擎,它是一个事务型的存储引擎,有行级锁和外键约束。提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统。MySql运行时InnoDB会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引(全文索引),而且它没有保存表的行数,当 select count(*) from table 时,需要扫描全表。当需要使用数据库事务时,该引擎是首选。由于锁的力度更小,写操作不会锁定全表,所以在并发较高时,使用InnoDB引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySql不能确定要扫描的范围,InnoDB表同样会锁全表。

适用场景:经常更新的表,适合处理多重并发服更新请求;支持事务;外键约束。只有它支持外键;支持自动增加列属性 auyo_increment。

MyIsam

MyIsam也是MySql的引擎。但是它不支持事务,也不支持行级锁和外键,因此当 insert 或 update 数据时即写操作需要锁定整个表,效率会低一些。

适用场景:不支持事务的设计,不支持外键的表设计。

MyIsam极度强调快速读取操作。

MyIsam中存储了表的行数,因此 select count(*) from table 时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIsam也是很好的选择。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值