发布网友 发布时间:2022-04-23 18:56
共2个回答
热心网友 时间:2022-04-07 17:28
临时表的存储引擎
在 MySQL 5.6 之前,所有磁盘上的临时表都默认创建为 MyISAM 类型。临时表是在内存中,还是在磁盘上创建,具体取决于配置,并在查询结束时立即删除。从 MySQL 5.7 开始,它们默认创建为 InnoDB 类型。
新默认值可提升整体性能,大多数情况下都是最佳选择。
可以使用新的配置项来设置临时表的存储引擎:internal_tmp_disk_storage_engine ,可选值为 InnoDB(默认)或 MyISAM。
InnoDB 类型的临时表存在的潜在问题
尽管使用 InnoDB 是性能最佳的,但可能会出现新的潜在问题。在某些特定情况下,您可能会出现磁盘耗尽和服务器中断。
与数据库中的任何其他 InnoDB 表一样,临时表具有自己的表空间文件。新文件与通用表空间一起位于数据目录中,名称为 ibtmp1。它存储所有 tmp 表。不运行手动运行 OPTIMIZE TABLE,表空间文件就会不断增长。如果你不能使用 OPTIMIZE,那么唯一能将 ibtmp1 大小缩小为零的方法,就是重新启动服务器。幸运的是,即使文件无法减小,在执行查询后,临时表也会自动删除,表空间可回收使用。现在,我们想一想以下情境:
存在未优化的查询,需要在磁盘上创建非常大的的临时表
存在优化的查询,但他们正在磁盘上创建非常大的临时表,因为你正在对此数据集进行计算(统计,分析)
高并发连接时,运行相同的查询,伴随临时表的创建
没有很多可用空间
在这些情况下,文件 ibtmp1 大大增加,很容易耗尽可用空间。这种情况每天发生几次,并且必须重启服务器才能完全缩小 ibtmp1 表空间。使用不可收缩的文件可以轻松耗尽磁盘空间!热心网友 时间:2022-04-07 18:46
MYSQL支持的数据引擎
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。
BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
3、启动InnoDB引擎的方法
Mysql中默认的是MyISAM数据引擎,可惜此引擎不支持事务处理,我们需要将默认的数据引擎改为InnoDB。其中InnoDB和
BerkeleyDB支持事务处理,只是默认的情况下都是被disable的。所有的引擎里面,InnoDB性能最强大,算是商业级的。启动InnoDB引擎的方法如下:
1)关闭mysql的服务
2)修改my.ini
将default-storage-engine=INNODB前的注释(#)去掉
将skip-innodb这行注释(加上#)
3)保存后重启mysql服务
4、MyISAM引擎和InnoDB引擎的基本差别
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:二进制层次的可移植性、NULL列索引、对变长行比ISAM表有更少的碎片、支持大文件、更好的索引压缩等
InnoDB不支持FULLTEXT类型的索引
InnoDB 中不保存表的具体行数
对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引
DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除
…………
这些区别能够影响应用程序的性能和功能,因此你必须针对业务类型来选择合适的引擎,才能最大的发挥MySQL的性能优势。