Mysql数据库的三个存储引擎有什么区别?( 二 )


您可以通过修改安装脚本中的选项来设置MySQL安装软件中可用的引擎 。如果您使用预打包的MySQL二进制分发软件,该软件包含一个通用引擎 。不过需要指出的是,如果要使用一些不常用的引擎,尤其是CSV 和引擎,需要手动重新编译MySQL源代码 。
【Mysql数据库的三个存储引擎有什么区别?】使用指定的存储引擎 。
您可以使用各种* * *来指定要使用的存储引擎 。最简单的* * *就是,如果你喜欢一个可以满足大部分数据库需求的存储引擎,可以在MySQL设置文件中设置默认引擎类型(使用选项),或者在启动数据库服务器时,在命令行后添加默认存储引擎或者默认表类型选项 。
更灵活的* * *是指定在发布与MySQL服务器同时提供的MySQL客户端时要使用的存储引擎 。最简单的* * *是在创建表时指定存储引擎的类型,如下所示:
创建表my table(id int title char()) =。
还可以使用以下语句来更改现有表使用的存储引擎:

Mysql数据库的三个存储引擎有什么区别?

文章插图
ALTER TABLE=
但是,以这种方式修改表类型时需要非常小心,因为修改不支持相同索引字段类型或表大小的类型可能会导致数据丢失 。如果指定当前数据库中不存在的存储引擎,将创建一个(默认)类型表 。
存储引擎之间的差异
为了决定选择哪个存储引擎,我们首先需要考虑每个存储引擎提供了哪些不同的核心功能,这使我们能够区分不同的存储引擎 。我们通常将这些核心功能分为四类:支持的字段和数据类型、锁定类型、索引和处理 。有些引擎有独特的功能,让你做决定 。我们将在今后仔细研究这些具体问题 。
字段和数据类型
虽然所有这些引擎都支持常见的数据类型,如整数实数类型和字符类型,但并非所有引擎都支持其他字段类型,尤其是BLOG(二进制大型对象)或TEXT文本类型 。其他引擎可能仅支持有限的字符宽度和数据大小 。
这些限制可能会直接影响您可以存储的数据,或者间接影响您使用这些信息实现的搜索类型或创建的索引 。这些差异将影响应用程序的性能和功能,因为您必须根据要存储的数据类型选择所需存储引擎的功能 。

数据库引擎中的锁定功能决定了如何管理信息的访问和更新 。当数据库中的对象被锁定进行信息更新时,在更新完成之前,其他进程不能修改数据(在某些情况下,不允许读取数据) 。
锁定不仅影响有多少不同的应用程序更新数据库中的信息,还影响数据的查询 。这是因为查询可能必须访问修改或更新的数据 。一般来说,这个延迟是很小的 。大多数锁定机制主要是为了防止多个进程更新相同的数据 。因为向数据中插入信息和更新信息都需要被锁定,所以可以想象使用同一个数据库的多个应用程序可能会产生很大的影响 。
不同的存储引擎支持不同对象级别的锁定,这会影响可以同时访问的信息 。支持三个级别:表锁定、块锁定和行锁定 。最受支持的是中提供的表锁定 。它在数据更新时锁定整个表,避免了很多应用程序同时更新一个特定的表,这对于有很多应用程序的多用户数据库影响很大,因为它延迟了更新过程 。
页面级锁定使用 DB引擎,并根据上传的信息页面(KB)锁定数据 。当数据库多处更新时,这种锁定不会有问题,但因为增加了几行信息,数据结构的最后一个KB会被锁定,当需要增加大量行时,尤其是大量小数据会有问题 。
行级锁定提供了更好的并行访问功能 。一个表中只有一行数据被锁定,这意味着许多应用程序可以更新同一表中不同行的数据,而不会导致锁定问题 。只有存储引擎支持行级锁定 。