您的位置:首页 > 其它

初学存储引擎笔记

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),这样的速度就很快了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: