MySQL的innodb和Myisam引擎的优缺点对比

2021年4月22日 6点热度 0条评论 来源: Nueka

MySQL的innodb和Myisam引擎的优缺点对比

什么是数据库引擎

数据库引擎是用于存储、处理和保护数据的核心服务。 简单的来说数据库引擎就是一个用来提供管理数据库数据的方式,如上图有很多机制,不同的数据库引擎有不同的侧重点和不同的机制,我们要讨论的就是MySQL中两款免费的官方提供的引擎直接的优点和缺点

Myisam 引擎和InnoDB引擎对比

1.事务安全

什么是事务安全
如图,分别在两个窗口开启事务,如果一个事务没完成就不会修改数据,避免造成了因为一些外界因素发生时而造成的数据丢失。
比如:如果在银行进行转账时,用户转出钱,但是另外一个用户的数据库还没修改但是银行断电了,使得被转钱的账户没有收到钱但是转账的用户的数据库中钱数目已经发生改变,就会导致钱的莫名流失,所以这是十分不安全的。

2.锁机制

可以想象如果我们在网上买高铁或者飞机票的时候,我们的票信息是在数据库中存储的,如果有个人买了最后一张票,此时管理员或者系统去查数据库表时(也就使使用数据库时)如果别人还是可以对数据库进行操作,比如另外一个人也买票在管理员查询完数据库之前,这就会导致同一张票被两个人购买,所以这是一个非常不合理的机制

所以数据库就有了一个锁机制,如果一个人在访问数据库的时候其他人是无法访问的,这样就避免了多人在有人使用数据库时去修改数据库中的数据,而是必须等前面的人使用好数据库才能进行修改数据的操作,如上面的例子,就不会出现一票多人的情况了,他们必须在数据库管理员使用完数据库之后才能知道是否能够买票(查询数据库的数据)

在数据库的锁机制中,Mysiam引擎用的是表锁,也就是有人使用数据库时,别人不能使用整张数据库表。而InnoDB引擎使用的是行锁,可以有多个用户使用数据库表但是不能使用同一行数据。

————————————————————————————————
如图:可以看到将第二张图片的命令和结果与事务的第二张图片进行对比,可以看出修改不同列的时候,数据库是允许的,而如果是同时(这里指的是有多个人使用数据库时并不是同一时刻的意思)修改同一列的数据是被拒绝的,这就是InnoDB引擎的行锁属性,Mysiam同理但是是不能使用整张表而不是某一行数据

3.空间使用和使用内存的对比

随着高并发的需求越来越大,Mysiam已经无法满足对于高并发的需求,所以InndDB引擎的出现使得数据库的高并发处理效果得到显著提高,当然还有其他的付费引擎。但是随之而来的缺点就是InnoDB引擎为了处理高并发,所使用的空间和内存相比与Mysiam引擎就要大很多

4.是否支持外键

外键就是两张数据库表的一种对应关系,可以使得两张表联系起来,InnoDB引擎支持外键而Mysiam引擎不支持,所以有时候InnoDB引擎使用又关系的两张表的查询会比较方便吧

    原文作者:Nueka
    原文地址: https://blog.csdn.net/qq_49625825/article/details/115996836
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。