Mysql数据库3种存储引擎有什么区别

Mysql数据库3种存储引擎有什么区别,第1张

MyISAM、InnoDB、Heap(Memory)、NDB 

貌似一般都是使用   InnoDB的,

mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。

最常使用的2种存储引擎:

1Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是frm(存储表定义)、MYD(MYData,存储数据)、MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。

2InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

/// <summary>

/// 创建数据库

/// </summary>

/// <param name="srvName">表示要连接的服务器名</param>

/// <param name="dbName">指定要创建的数据库名</param>

private string CreateDB(string srvName, string dbName)

{

SQLDMOApplication sqlApp = new SQLDMOApplicationClass();

SQLDMOSQLServer srv = new SQLDMOSQLServerClass();

srvConnect(srvName, "sa", "");

// 新建数据库名(包括路径)

string dbPath = srvRegistrySQLDataRoot + "//DATA//" + dbName;

bool DBExist = false;

foreach (SQLDMODatabase db in srvDatabases)

{

if (dbName == dbName)

{

DBExist = true;

}

}

//函数返回结果

string rvCDB;

if (DBExist)

{

rvCDB = "此数据库存名已存在请选择其它名称";

srvClose();

sqlAppQuit();

return rvCDB;

}

else

rvCDB = "成功创建数据库!";

SQLDMODatabase nDB = new SQLDMODatabase();

SQLDMODBFile nDBFile = new SQLDMODBFile();

SQLDMOLogFile nLogFile = new SQLDMOLogFile();

nDBName = dbName;

nDBFileName = dbName + "file";

nDBFilePhysicalName = dbPath + "_Datamdf";

nDBFilePrimaryFile = true;

nDBFileFileGrowthType = 0;

nDBFileFileGrowth = 1;

nDBFileGroupsItem("primary")DBFilesAdd(nDBFile);

nLogFileName = dbName + "log";

nLogFilePhysicalName = dbPath + "_Logldf";

nDBTransactionLogLogFilesAdd(nLogFile);

srvDatabasesAdd(nDB);

srvClose();

sqlAppQuit();

return rvCDB;

}

SQLDMOApplication sqlApp = new SQLDMOApplicationClass();

SQLDMOSQLServer srv = new SQLDMOSQLServerClass();

srvConnect("servername", "username", "password");

SQLDMODatabase nDB = new SQLDMODatabase();

SQLDMODBFile nDBFile = new SQLDMODBFile();

SQLDMOLogFile nLogFile = new SQLDMOLogFile();

nDBName = "tmpdb"; //数据库名

nDBFileName = "tmpfile"; //数据库文件名

nDBFilePhysicalName = @"e:/temp/tmpmdf"; //数据库文件在硬盘上存储的实际名称

nDBFilePrimaryFile = true;

nDBFileFileGrowthType = 0;

nDBFileFileGrowth = 1;

nDBFileGroupsItem("primary")DBFilesAdd(nDBFile);

nLogFileName = "tmplg";

nLogFilePhysicalName = @"e:/temp/tmpldf";

nDBTransactionLogLogFilesAdd(nLogFile);

srvDatabasesAdd(nDB);

srvClose();

sqlAppQuit();

非常不错!Nutanix作为混合多云行业的先导者,在数据库管理方面一直都非常有优势。比如Nutanix Era 20,作为数据库解决方案适用于所有云的简易数据库 *** 作。其用自动化服务取代耗时且复杂的数据库管理 *** 作,有助于企业将资源聚焦核心业务,提高其创新能力;提高业务灵活性和创新速度;支持一键式数据库 *** 作,适用于各种不同数据库引擎的消费级数据库管理百度。

此外,Nutanix 近来还推出了数据库管理类组合产品(NDB)。NDB 面向 PostgreSQL®、MySQL®、Microsoft® SQL 服务器、Oracle® 数据库等数据库引擎,简化了在混合多云环境下的数据库管理,具有非常强大的自动化功能,支持数据库实例的配置、扩展、修补、保护和克隆,还可以帮助客户在本地和公有云上为开发人员提供数据库即服务( DBaaS )和易用的自助式数据库体验,是企业进行数据库管理非常有力的工具,大家可以试试

MyISAM、InnoDB、Heap(Memory)、NDB

貌似一般都是使用InnoDB的,mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。

最常使用的2种存储引擎:

1Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是frm(存储表定义)、MYD(MYData,存储数据)、MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。

2InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

一、系统表空间

在 MySQL 数据目录下有一个名为 ibdata1 的文件,可以保存一张或者多张表。

923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1

这个文件就是 MySQL 的系统表空间文件,默认为 1 个,可以有多个,只需要在配置文件 mycnf 里面这样定义即可。

innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系统表空间不仅可以是文件系统组成的文件,也可以是非文件系统组成的磁盘块,比如裸设备,定义也很简单innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw

系统表空间里都有些啥内容?

具体内容包括:double writer buffer、 change buffer、数据字典(MySQL 80 之前)、表数据、表索引。

那 MySQL 为什么现在主流版本默认都不是系统表空间?

究其原因,系统表空间有三个最大的缺点:原因 1:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。

二、单表空间

单表空间不同于系统表空间,每个表空间和表是一一对应的关系,每张表都有自己的表空间。具体在磁盘上表现为后缀为 ibd 的文件。比如表 t1,对应的表空间文件为 t1ibd917107 96K -rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1ibd

单表空间如何应用到具体的表呢?

有两种方式:方式 1:在配置文件中开启。在配置文件中开启单表空间设置参数 innodb_filer_per_table,这样默认对当前库下所有表开启单表空间。innodb_file_per_table=1另外也可以直接建表时指定单表空间mysql> create table t1 (id int, r1 char(36)) tablespace innodb_file_per_table;

Query OK, 0 rows affected (004 sec)

单表空间除了解决之前说的系统表空间的几个缺点外,还有其他的优点,详细如下:

1 truncate table *** 作比其他的任何表空间都快;

2 可以把不同的表按照使用场景指定在不同的磁盘目录;

比如日志表放在慢点的磁盘,把需要经常随机读的表放在 SSD 上等。

mysql> create table ytt_dedicated (id int) data directory = '/var/lib/mysql-files';

Query OK, 0 rows affected (004 sec)3 可以用 optimize table 来收缩或者重建经常增删改查的表。一般过程是这样的:建立和原来表一样的表结构和数据文件,把真实数据复制到临时文件,再删掉原始表定义和数据文件,最后把临时文件的名字改为和原始表一样的。

三、通用表空间

通用表空间先是出现在 MySQL Cluster 里,也就是 NDB 引擎。从 MySQL 57 引入到 InnoDB 引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。

这是考虑性能的问题,事务支持,百度,你知道

的MyISAM,InnoDB中,堆(内存),NDB

貌似一般都是使用InnoDB的

MySQL存储引擎:MyISAM表中,InnoDB,BDB,MEMORY,MERGE,实施例,NDBCLUSTER,ARCHIVE,CSV,BLACKHOLE,FEDERATED等,其中InnoDB和BDB事务安全表,其他存储引擎非事务安全表。

最常用的存储引擎:

1Myisam

MySQL的默认存储引擎来创建创建一个新表,新表的存储引擎不指定,则默认使用MyISAM。每个MyISAM分成三个文件存储在磁盘上。相同的文件名和表名的扩展。的FRM(存储表定义),MYD(MYDATA存储数据)。

MYI(MyIndex的,存储索引)。数据文件和索引文件可以被放置在不同的目录中,均匀地分布IO,获得更快的。

2InnoDB的存储引擎,提供了交易的安全性具有提交,回滚和崩溃恢复能力。不过对比在MyISAM,InnoDB的写处理效率和存储引擎会占用更多的磁盘空间来保存数据和索引。

不知道你

有的,可以试下Nutanix Era 或者Nutanix 新推出的数据库服务组合产品NDB,都可以实现高效的一键式数据库管理等 *** 作。

先说下Nutanix Era。Nutanix Era 作为数据库解决方案适用于所有云的简易数据库 *** 作,使用自动化服务取代耗时且复杂的数据库 *** 作,将资源聚焦核心业务。提高业务灵活性和创新速度;支持一键式数据库 *** 作,适用于各种不同数据库引擎的消费级数据库管理。

同时,具有完全 *** 作可视性的 API 优先架构,轻松与企业首选的自助服务工具集成,使企业能够快速地进行系统的数据库自备、补丁管理、克隆等 *** 作,来帮助企业实现数据库统一管理。

至于Nutanix 数据库服务(NDB),其具有强大的自动化功能,支持数据库实例的配置、扩展、修补、保护和克隆;还可以帮助客户在本地和公有云上为开发人员提供数据库即服务(DBaaS)和易用的自助式数据库体验,不论是新的还是已有的数据库。NDB面向 PostgreSQL®、MySQL®、Microsoft® SQL 服务器、Oracle® 数据库等数据库引擎,简化了在混合多云环境下的数据库管理。

总之,无论是选择Nutanix Era,还是选择Nutanix 数据库服务(NDB),都可以实现优雅、高效的数据库管理等相关 *** 作,帮助你在企业云里构建一套数据库服务平台▪⋅

以上就是关于Mysql数据库3种存储引擎有什么区别全部的内容,包括:Mysql数据库3种存储引擎有什么区别、用SQLDMO怎样创建数据库、Nutanix做数‎据‎库管‎理咋样,有没有知道的分‎享下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9792561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存