MySQL engine.type类型的区别

本文详细介绍了MySQL中的多种存储引擎,包括MyISAM、InnoDB、BDB等,并对比了它们的特点,如支持事务处理的能力、执行速度及移植性等。

MySQL engine /type 类型 InnoDB /MYISAM/ MERGE /BDB/HEAP 的区别

MySQL 参考手册 发现 CREATE TABLE 时有多种数据库存储引擎:

TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }

网上查了下据说 MyISAM InnoDB 两种引擎常用

大至区别如下 [ 不知是否准确 ] :

高级处理 :
MyISAM 类型不支持事务处理等高级处理,而 InnoDB 类型支持。

执行速度 :
MyISAM 类型的表强调的是性能,其执行数度比 InnoDB 类型更快。

移值性 :
MyISAM 类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从 Windows 系统拷贝到 linux 系统中使用。

-----------------------------

今天找到官方准确解释

·          MyISAM :默认的 MySQL 插件式存储引擎,它是在 Web 、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改 STORAGE_ENGINE 配置变量,能够方便地更改 MySQL 服务器的默认存储引擎。

·          InnoDB :用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。

·           BDB :可替代 InnoDB 的事务引擎,支持 COMMIT 、 ROLLBACK 和其他事务特性。

·           Memory :将所有数据保存在 RAM 中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

·          Merge :允许 MySQL DBA 或开发人员将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为 1 个对象引用它们。对于诸如数据仓储等 VLDB 环境十分适合。

·           Archive :为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

·           Federated :能够将多个分离的 MySQL 服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

·           Cluster/NDB : MySQL 的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

·           Other :其他存储引擎包括 CSV (引用由逗号隔开的用作数据库表的文件), Blackhole (用于临时禁止对数据库的应用程序输入),以及 Example 引擎(可为快速创建定制的插件式存储引擎提供帮助)。

请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。

 

CREATE TABLE db 1 .site 1 _groups (
groupid smallint ( 5) unsigned NOT NULL auto_increment ,
name varchar (50) NOT NULL default '',
description text NOT NULL,
group_type varchar (10) NOT NULL default '',
KEY groupid (groupid ),
KEY group_type (group_type )
) Engine=MyISAM ;

 

CREATE TABLE db2.site2_groups (
groupid smallint ( 5) unsigned NOT NULL auto_increment ,
name varchar (50) NOT NULL default '',
description text NOT NULL,
group_type varchar (10) NOT NULL default '',
KEY groupid (groupid ),
KEY group_type (group_type )
) TYPE= MyISAM ENGINE =MERGE UNION=(db1.site1_groups) INSERT_METHOD=FIRST;

经DataX智能分析,该任务最可能的错误原因是: com.alibaba.datax.common.exception.DataXException: Code:[MYSQLErrCode-06], Description:[Column信息错误,请检查该列是否存在,如果是常量或者变量,请使用英文单引号’包起来]. - 执行的SQL为: SELECT MIN(id),MAX(id) FROM c_memcard_class_group 具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'id' in 'field list' - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'id' in 'field list' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2449) at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:446) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:433) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:412) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.checkSplitPk(SingleTableSplitUtil.java:183) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.getPkRange(SingleTableSplitUtil.java:157) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.splitSingleTable(SingleTableSplitUtil.java:52) at com.alibaba.datax.plugin.rdbms.reader.util.ReaderSplitUtil.doSplit(ReaderSplitUtil.java:84) at com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader$Job.split(CommonRdbmsReader.java:103) at com.alibaba.datax.plugin.reader.mysqlreader.MysqlReader$Job.split(MysqlReader.java:49) at com.alibaba.datax.core.job.JobContainer.doReaderSplit(JobContainer.java:733) at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:394) at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117) at com.alibaba.datax.core.Engine.start(Engine.java:86) at com.alibaba.datax.core.Engine.entry(Engine.java:168) at com.alibaba.datax.core.Engine.main(Engine.java:201) at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:41) at com.alibaba.datax.plugin.rdbms.util.RdbmsException.asQueryException(RdbmsException.java:81) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.checkSplitPk(SingleTableSplitUtil.java:185) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.getPkRange(SingleTableSplitUtil.java:157) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.splitSingleTable(SingleTableSplitUtil.java:52) at com.alibaba.datax.plugin.rdbms.reader.util.ReaderSplitUtil.doSplit(ReaderSplitUtil.java:84) at com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader$Job.split(CommonRdbmsReader.java:103) at com.alibaba.datax.plugin.reader.mysqlreader.MysqlReader$Job.split(MysqlReader.java:49) at com.alibaba.datax.core.job.JobContainer.doReaderSplit(JobContainer.java:733) at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:394) at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117) at com.alibaba.datax.core.Engine.start(Engine.java:86) at com.alibaba.datax.core.Engine.entry(Engine.java:168) at com.alibaba.datax.core.Engine.main(Engine.java:201) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'id' in 'field list' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2449) at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:446) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:433) at com.alibaba.datax.plugin.rdbms.util.DBUtil.query(DBUtil.java:412) at com.alibaba.datax.plugin.rdbms.reader.util.SingleTableSplitUtil.checkSplitPk(SingleTableSplitUtil.java:183) ... 11 more [2025-10-27 21:39:53] error: datax 抽数失败
最新发布
10-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值