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

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

Mysql数据库3种存储(MyISAM、MEMORY、InnoDB)引擎区别:

1、Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。MEMORY、InnoDB不是默认存储引擎。

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

Mysql数据库3种存储(MyISAM、MEMORY、InnoDB)区别对比:

1、MyISAM

它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度。要指定数据文件和索引文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定,文件路径需要使用绝对路径。

2、MEMORY

memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

默认情况下,memory数据表使用散列索引,利用这种索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了。因此,散列索引值适合使用在"="和"<=>"的 *** 作符中,不适合使用在"<"或">" *** 作符中,也同样不适合用在order by字句里。如果确实要使用"<"或">"或betwen *** 作符,可以使用btree索引来加快速度。

存储在MEMORY数据表里的数据行使用的是长度不变的格式,因此加快处理速度,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型。VARCHAR是一种长度可变的类型,但因为它在MySQL内部当作长度固定不变的CHAR类型,所以可以使用。

3、InnoDB

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

(1)自动增长列:

InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。可以通过"ALTER TABLE...AUTO_INCREMENT=n"语句强制设置自动增长值的起始值,默认为1,但是该强制到默认值是保存在内存中,数据库重启后该值将会丢失。

可以使用LAST_INSERT_ID()查询当前线程最后插入记录使用的值。如果一次插入多条记录,那么返回的是第一条记录使用的自动增长值。对于InnoDB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MyISAM表,自动增长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引到前面几列排序后递增的。

(2)外键约束:

MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

在Windows *** 作系统中,如果我们通过MySql的全自动安装包安装数据库,那么数据库的数据将会默认被存储在C盘中,而C盘作为系统盘,一般情况下我们并不想放和系统无关的一些内容。那么就需要将这些数据库数据移动到其他盘中,如何能够快捷方便的移动这些数据呢?

步骤其实也比较简单。

首先,MySql的数据库数据会被默认的安装在C盘的ProgramData目录下,我们进入到ProgramData后,找到MySql文件夹,根据自己安装的版本不同,在MySql文件夹下会有MySql Server *.*的文件夹,点击进入后,就可能看到一个叫Data的文件夹。

然后复制Data文件夹到你想要移动的目录下,例如:我想要移动到D盘的MySqlData下。

接下来,我们需要停止MySql服务。

可以在任务栏的搜索中,搜索“服务”,然后找到服务组件的应用并打卡。

在服务组件的页面,找到“服务(本地)”,然后选中,找到名为“MySQL”开头的服务,并停止它。

当然,还有一个简单的办法,就是先使用“Windows + R”快捷键打开运行工具,然后输入cmd回车打开“命令提示符”;或者在任务栏上搜索cmd,使用管理员打开“命令提示符”。

然后在“命令提示符”中,输入net stop mysql,当然,如果你和我一样是5.*的版本,例如我的是5.7版本的mysql,那么你需要输入“net stop mysql57”。

然后就会提示MySQL57 服务停止了。

这时,我们使用记事本打开mysql的配置文件my.ini,就在我们刚才移动Data的MySQL目录下。然后找到datadir配置,修改成我们的新目录并保存。

然后重新启动服务,启动方式和停止方式一样,在服务中右键MySQL的服务,然后选择启动。或者通过cmd,输入net start mysql或者好像我一样,输入net start mysql57。

当然,这里有可能会启动服务失败,启动服务失败的原因有可能是你用来放Data的文件目录的权限问题,这是我们右键这个目录,然后在安全的选项卡中加上NETWORK SERVICE的角色,权限是完全控制,然后保存。再启动服务试试?应该就OK了。

最后,打开你的mysql客户端试试是否成功了吧,确认无误后,就可以把之前的Data文件夹删掉了。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存