MyISAM 与InnoDB引擎

Mysql提供了插件式(pluggable)的存储引擎,存储引擎基于表的。

Show engines;查看存储引擎

备注:my.ini配置文件的【mysqld】选项组中,参数default-storage-engine配置了mysql服务实例的默认存储引擎。默认安装mysql后,default-storage-engine的参数值为InnoDB。

InnoDB存储引擎

InnoDB是事务(transaction)安全的,并且支持外键(foreign key)。如果某张表主要提供OLTP支持,需要执行大量的增删改操作(insert、 update、 delete)。对于支持事务的InnoDB表,影响速度的主要原因是打开了自动提交(autocommit)选项,或者程序没有显示调用“begin transaction;”和“commit”提交事务,导致每条insert、database或者update语句都自动开始事务和提交事务,严重影响了更新(insert、update、delete)。

MyISAM存储引擎主要提供OLAP支持,MyISAM具有自检和修复表的大多数工具。MyISAM表可以被压缩。如果某张表需要大量select语句,出于性能考虑,采用MyISAM。

使用set default_storage_engine=MyISAM;可以修改存储引擎;

如果想永久地设置默认存储引擎,需要修改my.ini配置文件中【mysqld】选项组中default-storage-engine的参数值,并且需要重启mysql服务。

Create table my_table

选择InnoDB引擎,创建表后,生成一个表名、后缀名为frm的表结构定义文件my_table.frm.

Frm文件记录了my_table表结构定义。

选择MyISAM引擎,创建表后,生成一个表名、后缀名为frm的表结构定义文件外,还会自动创建一个表文件名为表名、后缀名为MYD(即MYData的简写)的数据文件以及文件名为表名、后缀名为MYI(MYIndex)的索引文件。

表记录

备注:NULL与空字符串“ ‘ ’ ”是两个概念。例如,查询name值为NULL的记录,需要使“name  is  null”;而查询name值为空字符串“ ‘ ’ ”的记录,需要使用“name= ‘ ‘”。类似地,NULL与完整数零以及空格字符“ ‘ ’ ”的概念也不相同。

InnoDB表空间

InnoDB表空间分为共享表空间与独享表空间。

共享表空间:

Mysql服务实例承载的所有数据库的所有InnoDB表的数据信息、索引信息、各种元数据信息以及事务的回滚(UNDO)信息,全部存放在共享文件中。默认情况下,该文件位于数据库的根目录下,文件名是ibdata1,且文件的初始大小为10M。可以使用mysql命令“show variables like ‘innodb_data_file_path’;”,查看文件的属性(文件名、文件的初始大小、自动增长等属性信息)。

独享空间

如果将全局系统变量InnoDB_file_per_table的位置设置为ON(InnoDB_file_per_table)的默认值为OFF),那么以后再创建InnoDB存储引擎的新表时,这些标的数据信息、索引擎将保存到独享表空间文件中。

独享空间的使用

首先,首先使用mysql命令“show  variables like ‘innodb_file_per_table’;”查看该全局系统变量的值,然后,使用mysql命令“set @@global.innodb_file_per_table=ON;”将全局系统变量(@@global)中的参数InnoDB_file_per_table设置为开启。接着,使用mysql命令“show variable like ‘innodb_file_per_table’;”查看该全局系统变量的值。

备注:重做日志信息采用轮循策略依次记录在ib_logfile0与ib_logfile1重做日志文件中。无论是MyISAM存储引擎的表,还是InnoDB存储引擎的表,都必须唯一对应一个frm表结构文件。

如果数据库中还包含有InnoDB表,在备份数据库时,不仅需要将整个数据库目录复制一份,还需要复制共享表空间文件ibdata1,以及重做日志文件ib_logfile0与ib_logfie1.

删除表

Drop table table_name,即可删除名为table_name的表。

MyISAM 与InnoDB引擎,布布扣,bubuko.com

时间: 2024-12-13 02:45:34

MyISAM 与InnoDB引擎的相关文章

重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现

重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不支持外键,所以访问速度快.锁机制是表锁,支持全文索引 InnoDB :支持事务.支持外键,所以对比MyISAM,InnoDB的处理效率差一些,并要占更多的磁盘空间保留数据和索引.锁机制是行锁,不支持全文索引(5.6以上支持) Memory:数据是存放在内存中的,默认哈希索引,非常适合存储临时数据,服

MyISAM和InnoDB引擎

MyISAM MyISAM引擎是MySQL关系数据库管理系统的默认存储引擎(5.5.xx版本之前),这种MySQL表存储结构从就的ISAM代码扩展出许多有用的功能,在新版的MYSQL中InnoDB引擎由于对事物参照的完整性,已经更高并发性等优点开始逐渐取代MyISAM引擎 MyISAM引擎特点: 1.不支持事物(事物是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败) 2.表级锁定(更新是锁整个表).其锁定机制是表级索引,这虽然可以让锁定的实现成本很小,但是也同时大大降低了

MySQL中MyISAM和InnoDB引擎的区别

区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务 2. InnoDB支持外键,而MyISAM不支持.对一个包含外键的InnoDB表转为MYISAM会失败 3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高.但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据.因此,主键不应该过大,因为主键太

MYiSAM和InnoDB引擎区别(mysql)

MyISAM 1.读取速度快. 2.※更新时锁整个表. 3.占用资源少. 4.适合读多写少的业务. 5.※不支持事务. InnoDB 1.读取速度一般. 2.※更新时锁当前行. 3.占用资源高. 4.适合写多的业务. 5.※支持事务,分区等. 原文地址:https://www.cnblogs.com/csd97/p/8493408.html

MyISAM和InnoDB引擎的区别

MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交. InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表.即MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以

MySQL MyISAM和InNodb备份与恢复技巧

1. 为什么要备份数据库 对数据库来说,最重要也最容易被忽视的就是备份.由于不可预测性,偶然的事件可能会导致非常惨重的损失. 数据越是重要,数据的变化越频繁,备份越发需要经常进行. 备份周期根据不同业务的需要可以调整,但是不能忽视备份. 备份时最好也备份my.cnf或my.ini,这样可以保存你以前的配置参数. 2. MyISAM 表备份/恢复策略 2.1. 文件热备份 2.1.1. 拷贝文件 因为MySQL表保存为文件方式,很容易备份.要想保持备份的一致性,对相关表执行LOCK TABLES操

MyISAM与Innodb数据库引擎的区别

1. 存储结构 2. 存储空间 3. 可移植性.备份及恢复 4. 事务支持 5. 自增长 6. 表锁差异 7. 全文索引 8. 表主键 9. 表的具体行数 10. CURD操作 11. 外键 MySQL存储引擎中的MyISAM和InnoDB区别详解

MySQL存储引擎MyISAM与InnoDB的优劣

使用MySQL当然会接触到MySQL的存储引擎,在新建数据库和新建数据表的时候都会看到. MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB了. 至于到底用哪种存储引擎比较好?这个问题是没有定论的,需要根据你的需求和环境来衡量.所以对这两种引擎的概念.原理.异同和各自的优劣点有了详细的了解之后,再根据自己的情况选择起来就容易多了. MyISAM InnoDB 存储结构 每张表被存放在三个文件: frm-表格定义 MYD(MYData)-数据文件 MYI(MYIndex)-索引文件

【转】MySQL存储引擎中的MyISAM和InnoDB区别详解

转自:http://www.jb51.net/article/62457.htm MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点:不支持事务处理(transaction).不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM. InnoDB,是MySQL的数据