存储引擎可以理解为一种具体的数据管理机制,通过统一的接口从而屏蔽了不同存储引擎的差异。
不同的存储引擎可以针对某些具体的应用进行开发,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),这样的速度就很快了。
分享到:
相关推荐
适用于初学者,是喔千辛万苦总结出的,希望对大家有用
ruby初学笔记ruby初学笔记ruby初学笔记ruby初学笔记ruby初学笔记
JDBC笔记,初学者的笔记 JAVA JDBC 笔记
初学JS部分笔记总结
Mybatis 初学者学习笔记
Python初学者学习笔记
QTP初学者学习笔记PPT,很适合初学者
非常好的java笔记适合初学者,培训班老师上课给的笔记,非常细致全面,适合初学者
Android初学者学习笔记(自己整理).pdf
CAD初学者课堂笔记(含快捷键).pdf
个人初学JAVA时所记笔记。只是前期的概念,不多。
Android-初学者学习笔记(自己整理).pdf
JSP 初学者 笔记 示例代码JSP 初学者 笔记 示例代码JSP 初学者 笔记 示例代码JSP 初学者 笔记 示例代码JSP 初学者 笔记 示例代码
初学者必备的速成比笔记,包括数据绑定,控制器,依赖注入,购物车实例,常用工具函数,JQlite,angular模块设计等共23课,课堂笔记代码。
android笔记初学者必看 包含代码和知识要点 为求职做好充分准备
python初学者笔记
flex,初学者,笔记,资料 flex 初学者 笔记 学习资料
前端初学者做笔记教程 MarkDown-Typora菜鸟入门
Visual Basic 编程初学者笔记Visual Basic 编程初学者笔记Visual Basic 编程初学者笔记
网页设计的笔记,希望对初学者有用!! 包含了基本的软件操作如firework ,dreamwave,等内容