`
sogotobj
  • 浏览: 619182 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

初学存储引擎笔记

 
阅读更多

存储引擎可以理解为一种具体的数据管理机制,通过统一的接口从而屏蔽了不同存储引擎的差异。

不同的存储引擎可以针对某些具体的应用进行开发,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:

MySQLISAM扩展格式和缺省的数据库引擎,提供索引和字段管理功能、表锁定,对事务完整性没有要求,访问速度快,因为是表锁定,固不会发生死锁,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。

  

HEAP

  HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAMMyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。让我再重复一遍:在你用完表格之后,不要忘记删除表格。

  

InnoDB

InnoDB是唯一的事务安全表,具有提交、回滚和崩溃恢复能力;它支持外键;但是它的锁是行锁,使得加锁时,资源占用相对高,而且容易发生死锁。另外,InnoDB的写效率差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储方式为两种:1使用共享表空间存储。2使用独立表空间。InnoDB默认情况下的事务是打开的,就是说每插入一条记录时候,InnoDB类型的表都会把它当作一个单独的事务来处理。所以如果我们插入了10000条记录,而且没有将事务关闭,那么InnoDB类型的表会把它当作10000个事务来处理,此时插入的总时间是很多的,这个时候一定要首先把事务关掉再插入(set autocommit=0),这样的速度就很快了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics