通过使用命令查看mysql存储引擎

本文主要给大家简单讲讲通过使用命令查看mysql存储引擎,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望通过使用命令查看mysql存储引擎这篇文章可以给大家带来一些实际帮助又是;,,,,,,,,,,,,,,,,,,,,,,,,,,,以前,,

<>显示变量如& # 39;storage_engine& # 39;;

一,InnoDB存储引擎

1. InnoDB是事务型数据库的首选引擎

支持事务安全表(ACID)

事务的酸属性:即原子性,一致性,隔离性、持久性

。原子性:原子性也就是说这组语句要么全部执行,要么全部不执行,如果事务执行到一半出现错误,数据库就要回滚到事务开始执行的地方。

实现:主要是基于MySQ日志系统的重做和撤销机制。事务是一组SQL语句,里面有选择,查询,删除等功能。每条语句执行会有一个节点。例如,删除语句执行后,在事务中有个记录保存下来,这个记录中储存了我们什么时候做了什么事。如果出错了,就会回滚到原来的位置,重做里面已经存储了我做过什么事了,然后逆向执行一遍就可以了。

b。一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。(例如:比如向b转账,不可能一个扣了钱,b却没有收到)

c。隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰;

如果不考虑隔离性则会出现几个问题:

我脏读:是指在一个事务处理过程里读取了另一个未提交的事务中的数据(当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致);(读取了另一个事务未提交的脏数据)

二世,不可重复读:在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了;(读取了前一个事务提交的数据,查询的都是同一个数据项)

三世,虚读(幻读):是事务非独立执行时发生的一种现象(例如:事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样);(读取了前一个事务提交的数据,针对一批数据整体)

d。持久性:事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚

2。InnoDB是mySQL默认的存储引擎

默认的隔离级别是RR,并且在RR的隔离级别下更近一步,通过多版本并发控制(MVCC)解决不可重复读问题,加上间隙锁(也就是并发控制)解决幻读问题。因此InnoDB的RR隔离级别其实实现了串行化级别的效果,而保留了比较好的并发性能。

mySQL数据库为我们提供的四种隔离级别:

,序列化(串行化):可避免脏读,不可重复读,幻读的发生,

b,可重复读(可重复读):可避免脏读,不可重复读的发生,

c,读承诺(读已提交):可避免脏读的发生,

d,读未提交(读未提交):最低级别,任何情况都无法保证;

从- - - - - d隔离级别由高到低,级别越高,执行效率越低

3. InnoDB支持行级锁。

行级锁可以最大程度的支持并发,行级锁是由存储引擎层实现的。

锁:锁的主要作用是管理共享资源的并发访问,用于实现事务的隔离性

类型:共享锁(读锁),独占锁(写锁)

mySQL锁的力度:表级锁(开销小,并发性低),通常在云服务器层实现

行级锁(开销大,并发性高),只会在存储引擎层面进行实现

4, InnoDB是为处理巨大数据量的最大性能设计。

它的CPU效率可能是任何基于磁盘的关系型数据库引擎所不能匹敌的

5, InnoDB存储引擎完全与mySQL云服务器整合

InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池.InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件),

6, InnoDB支持外键完整性约束

存储表中的数据时,每张表的存储都按照主键顺序存放,如果没有显示在表定义时指定主键.InnoDB会为每一行生成一个字6节的ROWID,并以此作为主键

7, InnoDB被用在众多需要高性能的大型数据库站点上

8, InnoDB中不保存表的行数(如:select count(*)从表时,InnoDB需要扫描一遍整个表来计算有多少行);清空整个表时,InnoDB是一行一行的删除,效率非常慢;

通过使用命令查看mysql存储引擎