mysql中engine=innodb和engine=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

?

时间: 2024-07-31 14:23:35

mysql中engine=innodb和engine=myisam的区别的相关文章

Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别

一直对utf8_unicode_ci与utf8_general_ci这2个校对集很迷惑,今天查了手册有了点眉目.不过对中文字符集来说采用utf8_unicode_ci与utf8_general_ci时有何区别还是不清楚? 下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明: 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些

mysql中的where和having子句的区别

mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. SQL实例: 一.显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的

MySQL中create table as 与like的区别分析

这篇文章主要介绍了MySQL中create table as 与like的区别,结合实例分析了二者在使用中的具体区别与主要用途,需要的朋友可以参考下,具体如下: 对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? 代码如下: create table t2 as select * from t1 where 1=2; as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引. 代码如下: cr

mysql中 drop、truncate和delete的区别

mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的.并且在删除的过程中不会激活与表有关的删除触发器.执行速度快. (2)表和索引所占空间. 当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小, DELETE操作不会减少表或索引

MySQL中常用的存储引擎(MyISAM 和InnoDB)

 数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能.现在许多的数据库管理系统都支持多种不同的存储引擎.MySQL的核心就是存储引擎. 使用 SHOW ENGINES; 命令查看MySQL支持的存储引擎,  Support 列表示某种引擎是否可以使用,YES表示可以,NO表示不可以,DEFAULT表示当前默认存储引擎. mysql> SH

MySql中启用InnoDB数据引擎简介 以及 InnoDB与 MYISAM的区别和联系

1.存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

Mysql中那些锁机制之MyISAM

说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不支持外键,所以访问速度快.锁机制是表锁,支持全文索引 InnoDB :支持事务.支持外键,所以对比MyISAM,InnoDB的处理效率差一些,并要占更多的磁盘空间保留数据和索引.锁机制是行锁,不支持全文索引 Memory:数据是存放在内存中的,默认哈希索引,非常适合存储临时数据,服务器关闭后,数据会丢失掉. 如何选择存储引擎: MyISAM:应用是以读操作和插入操作为主

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

1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别

在mysql中存在着各种utf8编码格式,如下表: 1)utf8_bin 2)utf8_general_ci 3)utf8_general_cs utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写. utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感. utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感. 现在假设执行如下命令: create table test_bin ( nam