`
jiahh
  • 浏览: 38572 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

mysql中 " engine=innodb " 以及 " engine=innodb 和engine=myisam的区别 "

 
阅读更多
mysql中engine=innodb和engine=myisam的区别 (2012-10-17 14:21:53)转载▼
标签: mysql engine innodb myisam spring it 分类: MySql
    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意。后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什么区别,就去查了查。原来是MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。 MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。这 样就可以根据数据表不同的用处是用不同的存储类型。

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

修改:

    ALTER TABLE tablename ENGINE = MyISAM ;

    MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT,MyISAM是更好的选择。

    InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

    对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打 开也可以),将大大提高性能。

===============================================================
1. 4.0以上mysqld都支持事务,包括非max版本。3.23的需要max版本mysqld才能支持事务。

2. 创建表时如果不指定type则默认为myisam,不支持事务。
可以用 show create table tablename 命令看表的类型。

2.1 对不支持事务的表做start/commit操作没有任何效果,在执行commit前已经提交,测试:
执行一个msyql:
use test;
drop table if exists tn;
create table tn (a varchar(10)) type=myisam;
drop table if exists ty;
create table ty (a varchar(10)) type=innodb;
begin;
insert into tn values('a');
insert into ty values('a');
select * from tn;
select * from ty;

都能看到一条记录

执行另一个mysql:
use test;
select * from tn;
select * from ty;

只有tn能看到一条记录
然后在另一边
commit;
才都能看到记录。

3. 可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全:
   alter table tablename type=innodb;

3.1 innodb表不能用repair table命令和myisamchk -r table_name
但可以用check table,以及mysqlcheck [OPTIONS] database [tables]

4. 启动mysql数据库的命令行中添加了以下参数可以使新发布的mysql数据表都默认为使用事务(
只影响到create语句。)
--default-table-type=InnoDB

测试命令:

use test;
drop table if exists tn;
create table tn (a varchar(10));
show create table tn;

5. 临时改变默认表类型可以用:
set table_type=InnoDB;
show variables like 'table_type';
或:
c:/mysql/bin/mysqld-max-nt --standalone --default-table-type=InnoDB
分享到:
评论

相关推荐

    mysql中engine=innodb和engine=myisam的区别介绍

    若想将不支持事务的MyISAM表转换为InnoDB,可以使用`ALTER TABLE tablename ENGINE = InnoDB`,数据不会丢失,但请注意,InnoDB表不能使用`REPAIR TABLE`命令或`myisamchk -r`工具,而是需依赖`CHECK TABLE`或`mysql...

    mysql更改引擎(InnoDB,MyISAM)的方法

    mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...

    MyISAM引擎与InnoDB引擎性能的对比

    MySQL数据库系统提供了多种存储引擎,其中最常用的两种是MyISAM和InnoDB。它们各自具有独特的特性和适用场景,理解二者的性能差异对于优化数据库设计至关重要。 MyISAM引擎是MySQL早期的默认存储引擎,以其高速度和...

    mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

    在MySQL数据库中,InnoDB是一个重要的存储引擎,它支持事务处理、行级锁定以及外键约束,常用于处理高并发和大数据量的应用场景。然而,当你尝试执行一个依赖于InnoDB存储引擎的SQL文件时,如果系统报出“Error: ...

    MYSQL中 TYPE=MyISAM 错误的解决方法

    MyISAM和InnoDB是MySQL中最常见的两种存储引擎,它们各有优缺点。MyISAM以其轻量级、快速的查询性能和较小的内存占用受到青睐,但它不支持事务处理和行级锁定,这意味着在并发操作下可能会出现数据一致性问题。而...

    mySql 存储引擎 启用 Innodb

    其中,InnoDB作为MySQL中最常用的存储引擎之一,提供了众多高级特性,如事务支持、行级锁定以及外键约束等。本文将详细介绍如何在MySQL中启用InnoDB存储引擎,并对比分析InnoDB与其他存储引擎(如MyISAM)之间的主要...

    mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    在使用MySQL数据库进行表结构创建或修改的过程中,有时可能会遇到这样的错误提示:“MySQL server version for the right syntax to use near 'type=InnoDB' at line 1”。这个错误通常表明在SQL语句中使用的语法与...

    MYSQL无法启动提示: Default storage engine (InnoDB) is not available的解决方法

    ### MySQL无法启动提示:“Default storage engine (InnoDB) is not available”的解决方法 #### 背景介绍 MySQL是一款广泛使用的开源关系型数据库管理系统。它提供了多种存储引擎,包括MyISAM、InnoDB等,每种引擎...

    MySql中启用InnoDB数据引擎的方法.docx

    MySQL默认配置了多种存储引擎,例如MyISAM、InnoDB、BDB、Memory、Merge、Archive、Federated、Cluster/NDB以及一些其他特殊引擎如CSV和Blackhole。每个引擎都有其适用的场景,例如MyISAM适合读取密集型应用,而...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL中,MyISAM和InnoDB是最常见的两种存储引擎,它们各自有独特的特性和适用场景。 首先,我们来看一下MySQL默认存储引擎的变迁。在MySQL 5.1之前的版本,MyISAM是默认的存储引擎,它以快速读取和较小的内存...

    InnoDB的奥秘:深入探索MySQL的InnoDB存储引擎特性

    在 MySQL 中启用和配置 InnoDB 引擎非常简单,可以通过配置文件或命令行完成: - **设置 InnoDB 为默认存储引擎**:`SET DEFAULT_STORAGE_ENGINE=INNODB;` - **创建 InnoDB 表**: ```sql CREATE TABLE users ( ...

    关于Mysql数据库还原修改存储引擎为INNODB引起的错误问题分析.pdf

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统,支持多种存储引擎,其中InnoDB是最常见的,因为它提供了事务处理、行级锁定以及外键支持等功能,适用于高并发和数据完整性要求较高的应用场景。然而,在尝试...

    将MySQL从MyISAM转换成InnoDB错误和解决办法

    ### 将MySQL从MyISAM转换成InnoDB的错误与解决方法 #### 一、问题背景及概述 本文主要探讨了在将MySQL数据库从MyISAM引擎转换为InnoDB引擎时遇到的问题及其解决方法。作者最初使用的是一款仅支持MyISAM引擎的非...

    修改MySQL的数据库引擎为INNODB的方法

    对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎。如果你要使用全文索引,那必须使用myisam。 INNODB的实用性,安全性,稳定性更高但是效率比MYISAM稍差,但是有的功能是MYISAM没有的。修改MySQL...

    关于Mysql数据库还原修改存储引擎为INNODB引起的错误问题分析.docx

    MySQL 数据库是一个广泛使用的开源关系型数据库管理系统,其支持多种存储引擎,如 InnoDB 和 MyISAM。InnoDB 是一种事务安全的存储引擎,提供行级锁定和外键支持,适用于需要高度数据完整性和并发性的应用。MyISAM ...

    MySQL创建数据表时设定引擎MyISAM/InnoDB操作

    在本篇文章中,我们将重点关注如何在MySQL中为数据表设置存储引擎MyISAM和InnoDB的操作方法,并分析它们之间的区别。 首先,MySQL中的存储引擎可以理解为表的后端存储和检索机制,它们决定了如何存储表中的数据以及...

    深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

    MySQL数据库提供了多种存储引擎,其中MyISAM和InnoDB是最为常见的两种。本文将对这两个存储引擎进行深入的对比分析,以帮助读者更好地理解它们的特性和适用场景。 首先,MyISAM是MySQL的默认存储引擎,它源自于传统...

Global site tag (gtag.js) - Google Analytics