初学存储引擎笔记
2010-11-03 00:20
204 查看
存储引擎可以理解为一种具体的数据管理机制,通过统一的接口从而屏蔽了不同存储引擎的差异。
不同的存储引擎可以针对某些具体的应用进行开发,MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。
Mysql > SHOW ENGINES;
在启动mysqld 的时候,可以手动的指定一个存储引擎:
--default-storage –engine 或
--default-table-type
同时,在客户端也可以在创建表的时候指定存储引擎
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
或
ALTER TABLE mytable ENGINE = MyISAM
但需要注意,修改表的存储引擎,可能因为不兼容而丢失数据。如果指定了一个不存在的存储引擎,就会使用默认类型创建表。
存储引擎核心功能:
1. 支持的字段和数据类型
2. 数据库锁,锁涉及到对事务的处理,数据一致性。不同的存储引擎在不同的对象级别支持锁定,而且这些级别将影响可以同时访问的信息。得到支持的级别有三种:表锁定(MyISAM)、块锁定(Berkeley DB)和行锁定(Innodb)
3. 建立索引
4. 事务处理
ISAM
读取操作速度快,不占用大量内存和存储资源,但不支持事务处理和容错处理。
MyISAM:
MySQL的ISAM扩展格式和缺省的数据库引擎,提供索引和字段管理功能、表锁定,对事务完整性没有要求,访问速度快,因为是表锁定,固不会发生死锁,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。
HEAP
HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。让我再重复一遍:在你用完表格之后,不要忘记删除表格。
InnoDB
InnoDB是唯一的事务安全表,具有提交、回滚和崩溃恢复能力;它支持外键;但是它的锁是行锁,使得加锁时,资源占用相对高,而且容易发生死锁。另外,InnoDB的写效率差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储方式为两种:1 使用共享表空间存储。2 使用独立表空间。InnoDB默认情况下的事务是打开的,就是说每插入一条记录时候,InnoDB类型的表都会把它当作一个单独的事务来处理。所以如果我们插入了10000条记录,而且没有将事务关闭,那么InnoDB类型的表会把它当作10000个事务来处理,此时插入的总时间是很多的,这个时候一定要首先把事务关掉再插入(set autocommit=0),这样的速度就很快了。
不同的存储引擎可以针对某些具体的应用进行开发,MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。
Mysql > SHOW ENGINES;
在启动mysqld 的时候,可以手动的指定一个存储引擎:
--default-storage –engine 或
--default-table-type
同时,在客户端也可以在创建表的时候指定存储引擎
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
或
ALTER TABLE mytable ENGINE = MyISAM
但需要注意,修改表的存储引擎,可能因为不兼容而丢失数据。如果指定了一个不存在的存储引擎,就会使用默认类型创建表。
存储引擎核心功能:
1. 支持的字段和数据类型
2. 数据库锁,锁涉及到对事务的处理,数据一致性。不同的存储引擎在不同的对象级别支持锁定,而且这些级别将影响可以同时访问的信息。得到支持的级别有三种:表锁定(MyISAM)、块锁定(Berkeley DB)和行锁定(Innodb)
3. 建立索引
4. 事务处理
ISAM
读取操作速度快,不占用大量内存和存储资源,但不支持事务处理和容错处理。
MyISAM:
MySQL的ISAM扩展格式和缺省的数据库引擎,提供索引和字段管理功能、表锁定,对事务完整性没有要求,访问速度快,因为是表锁定,固不会发生死锁,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。
HEAP
HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。让我再重复一遍:在你用完表格之后,不要忘记删除表格。
InnoDB
InnoDB是唯一的事务安全表,具有提交、回滚和崩溃恢复能力;它支持外键;但是它的锁是行锁,使得加锁时,资源占用相对高,而且容易发生死锁。另外,InnoDB的写效率差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储方式为两种:1 使用共享表空间存储。2 使用独立表空间。InnoDB默认情况下的事务是打开的,就是说每插入一条记录时候,InnoDB类型的表都会把它当作一个单独的事务来处理。所以如果我们插入了10000条记录,而且没有将事务关闭,那么InnoDB类型的表会把它当作10000个事务来处理,此时插入的总时间是很多的,这个时候一定要首先把事务关掉再插入(set autocommit=0),这样的速度就很快了。
相关文章推荐
- 22.笔记 MySQL学习——Memory存储引擎
- MySQL学习笔记七:存储引擎
- MySQL学习笔记(四):存储引擎的选择
- MySql笔记-主要存储引擎
- MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
- MySQL学习笔记—插件式存储引擎
- MySQL学习笔记(四):存储引擎的选择
- 23.笔记 MySQL学习——NDB存储引擎
- MySQL存储引擎笔记
- MySql学习 - MySql存储引擎笔记
- innodb存储引擎学习笔记
- 24.笔记 MySQL学习——其他存储引擎
- MySQL学习笔记——存储引擎的索引特性
- MySQL学习笔记_如何选择合适的存储引擎
- MySQL自学笔记7--存储引擎、事务
- 【mysql基础】mysql学习笔记-2-存储引擎
- Mysql 存储引擎学习笔记
- mysql 笔记 六 存储引擎 事务 索引 存储过程
- MySQL学习笔记2---MySQL数据库的存储引擎和数据类型
- MySQL入门学习笔记之存储引擎