存储引擎
- 数据库存储引擎是数据库底层软件组织。
- 数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。
- 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
- 存储引擎只要有:InnoDB、Myisam、Memory等。
- 通过mysql查看存储引擎
- show engines命名查看mysql使用的引擎
- 不同
InnoDB
- InnoDB是mysql默认的引擎,
支持事务安全表(ACID),支持行级锁定和外键
- InnoDB适用于经常更新的表,
适合处理多重并发的更新请求
- 可以通过bin-log日志等方式从
灾难中恢复
- 外键约束
- 支持
自动增加列属性
auto-increment InnoDB底层存储结构为B+树
,B+树的数据域存储的是实际的数据,这种索引为聚集索引InnoDB表数据文件本身就是主索引
- InnoDB的
辅助索引树存储的是相应记录主键的值
MYISAM
- MyIsam采用的是
静态索引结构
,基于ISAM存储引擎 - MyIsam的索引结构为
B+树
,B+树的数据域存储的内容为实际数据的地址
,这种索引为非聚集索引 - MyIsam执行
读取操作数据很快
,而且不占用大量的内存和存储资源,但不提供
对数据库事务、行级锁和外键支持 - 当INSERT(插入)或UPDATE(更新)数据时需要
锁定整个表
,效率降低
Memory
- Memory(Heap堆内存),使用存在内存中的内容创建表
- 每个Memory表只实际对应一个磁盘文件,该类型的表访问速度非常快,表数据存放在内存中
- 默认使用HASH索引
- 支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘
索引
- 索引是帮助MYSQL高效获取数据的数据结构
- 常见的查询算法:顺序查找、二分查找、二叉树排序树查找、哈希散列法、分块查询、平衡多路搜索树、B树
索引原则
- 选择
唯一性索引
- 为经常需要
排序、分组和联合操作
的字段建立索引 - 为常作为
查询条件的字段建立索引
- 限制索引数量
- 尽量使用数据量少得索引
- 尽量使用前缀来索引
存储过程
一组为了完成特定功能的sql语句集
,存储在数据库中- 经过
第一次编译后再次调用不需要二次编译
,用户通过指定存储过程的名字并给出参数调用 - 存储过程可以
接收参数,调用另一过程,返回状态值
- 为调用者提供动态结果
- 远程SQL server中运行
触发器
一段自动执行的程序
,是一种特殊的存储过程- 触发器是
对某一个表进行操作时触发
,系统自动调用执行该表上对应的触发器 - 优点:安全性、审计、实现复杂的数据完整性规则、同步实时复制表中数据
- 缺点:不能调用将数据返回客户端的存储过程、不能采用call语句的sql语句、不能使用显式或隐式方式开始或结束事务