我们将讨论不同类型的引擎,其用例,优点和缺点等。
数据库引擎(也称为存储引擎)是处理CRUD(创建,读取,更新,删除)操作和数据库磁盘存储的软件程序。虽然有些很简单,并且仅管理存储和CRUD,但更复杂的发动机提供了高级功能,例如酸支持和交易。数据库系统在这些引擎之上构建其功能。
在讨论中,我们将探讨各种类型的数据库引擎,它们的用例及其利弊,以提供对数据库引擎世界的全面见解。
迈萨姆
在C上写的是Myisam是MySQL的第一个数据库引擎。
-
ISAM代表索引顺序访问方法。在此引擎中,每个索引我们创建指向一排。它使用b-tree进行索引。
-
由于每个索引都指向一行,因此读取操作是快速。甚至插入操作也很快,因为我们将新记录附加到文件末尾的末尾,并且我们始终知道文件的末尾在哪里。但是,主要问题是更新和删除操作。当我们更新/删除现有的行时,我们会更改行大小,这会更改偏移量,所有索引指针都需要更改。这很昂贵。
-
它提供没有交易支持。
-
数据库崩溃了损坏的表,必须手动维修。
-
它仅提供表级锁定。如果您想隔离,只需锁定整个桌子。
innodb
它取代了Myisam作为MySQL和Mariadb的默认数据库引擎。
-
在此引擎中,B+树用于索引。每个索引指向主键,每个主键点指向一行。如果没有主钥匙,则引擎为您制作。
-
它支持交易,因此实现了酸性特征。
-
它还允许行级锁定,因此您不需要锁定整个桌子。这使查询处理速度更快。
-
它还引入了许多新功能,例如外国钥匙,表格和空间操作。
sqlite
它是由Dwayne Richard Hipp设计的,并用C语言编写
它是使用最广泛的嵌入式数据库之一,用于Web浏览器,移动应用程序,操作系统等。
-
它使用b-tree进行索引。
-
它允许所有酸性特征
-
它允许表级锁定。它不需要行级锁定,因为它通常在本地使用,并且只有一个用户。
-
它允许并发读写。
等级
它是由两位Google工程师Jeffery Dean和Sanjay Ghemawat设计的,并用C ++语言编写。它的灵感来自Google Bigtable。
-
它是不是SQL数据库。它没有关系数据库模型,并且不支持SQL查询。
-
它使用对数结构化合并树作为索引。它非常适合高插入量。 (与B树不同,在插入后可能需要重新平衡,这使插入操作慢)
-
它不允许交易。
-
它是单线程
-
有级别的文件,随着文件的增长,级别合并。
-
他们还支持提前记录以确保持久性。
Rocksdb
它是Google级别的叉子,由Facebook进一步开发。它用作Mysql,Mariadb和Percona的Myrocks。它也被词者用于mongodb。
与LevelDB的相似性
-
它还使用日志结构合并树
-
它也是键值对存储,不支持SQL查询。
添加到rocksdb
的新功能-
它允许交易。
-
它也使用多线程来提高性能。
-
其他功能包括地理空间索引,布鲁姆过滤器,合并操作员等
总而言之,了解不同类型的数据库引擎及其用例可以极大地影响数据库系统的性能和功能。每个引擎都有自己的优点和劣势,因此根据您的特定要求选择正确的发动机。
。- Myisam是第一个MySQL数据库引擎,提供了快速阅读和插入操作,但缺乏交易支持,可能容易出现桌面损坏。
- InnoDB,默认的MySQL和Mariadb引擎,提供酸合规性,行级锁定以及外国钥匙和空间操作等高级功能。
- sqlite是一种流行的嵌入式数据库,广泛用于Web浏览器,移动应用程序和操作系统,提供酸功能,表级锁定以及对并发读取和写入的支持。
- LevelDB受Google的BigTable启发,是一个非SQL数据库,具有对数结构合并树的索引,使其非常适合高插入量,但缺乏交易支持,并且是单线线程。
- RockSDB是LevelDB的叉子,添加了交易,多线程和地理空间索引之类的功能,使其适用于MySQL,Mariadb,Percona和MongoDB。
选择正确的数据库引擎取决于您的特定用例,性能要求和所需功能。仔细评估和比较不同的引擎以做出明智的决定并优化数据库系统以提高效率和可靠性是至关重要的。