MySQL存储引擎概述
一、MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的。
二、各种存储引擎的特性
(A) MyISAM :不支持事务、不支持外键、访问速度快。
每个MyISAM表在磁盘上存储成3个文件,文件名与表名相同,扩展名是:
(A1) frm (存储表定义)
(A2) MYD (MYData, 存储数据)
(A3) MYI (MYIndex, 存储索引)
数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。可以在创建表的时候,指定该表的 DATA DIRECTORY
和 INDEX DIRECTORY 语句来分别指定路径。
MyISAM表可能损坏,可以通过工具检测和修复,表损坏可能导致数据库异常重新启动,需要尽快修复。支持三种存储格式,分别是:
静态(固定长度)表;字段都是非变长字段:存储速度快,容易缓存,故障易恢复,占用空间多。注意:会去除字段的尾部空格
动态表;包含变长字段,可能产生碎片,需定期优化表。占用空间较多,故障不易恢复。
压缩表;由 myisampack 工具创建,占用空间非常小,每个记录单独压缩,非常小的访问开支。
(B) InnoDB :支持事务、支持外键,相比于MyISAM,写入速度稍差一些,占用空间稍多一些。
注意:使用 LAST_INSERT_ID() 查询的只是当前线程最后插入记录使用的值,并不是数据库中最后插入记录使用的值。
外键关联时:四种索取类型:
RESTRICT:限制在子表有关联记录的情况下,父表不能更新或者删除;
NO ACTION:限制在子表有关联记录的情况下,父表不能更新或者删除;
CASCADE:表示父表在更新或删除时,相应地更新和删除子表的记录。
SET NULL:表示父表在更新或删除时,子表的对应字段被SET NULL。
当某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除。
可以暂时关闭外键的检测:SET FOREIGN_KEY_CHECKS=0。
InnoDB存储表和索引有两种方式:
使用共享表空间存储,表结构在 .frm 文件中,数据和索引文件在 innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中,可以是多个文件。
使用多表空间存储,表结构在 .frm 文件中,每个表的数据和索引单独在 .ibd 中。如果是分区表,这每个分区对应单独的 .ibd 文件,文件名是“表名+分区名", 可以指定每个分区的数据文件位置。
注意:即使在多表空间的存储方式下,共享表空间还是必须的,InnoDB把内部数据词典和未作日志放在这个文件中。
(C) MEMORY:使用内存中的内容来创建表。访问速度快,默认是HASH索引,数据不可持久化。
每个MEMORY表只对应一个磁盘文件,格式是 .frm。
每个MEMORY表的数据量大小,受到 max_heap_table_size 系统变量的约束,初始大小是16MB。
MEMORY表通常用于内容变化不频繁的转换码表,统计操作的中间结果表。注意该表数据的不持久化特性。
(D) MERGE:其实就是对多个结构完全相同的MyISAM表的合并表示。
MySQL存储引擎概述的更多相关文章
- mysql基础之-mysql存储引擎概述(八)
0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines; --- 查看当前所有所支持的存储引擎 mysql> show table st ...
- MYSQL 存储引擎概述
一.存储引擎 Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中每一种技术都使用了不同的存储机制,索引技巧.锁定水平并且最终提供广泛的不同功能和能力.通过选择不同的技术,你能够获得 ...
- 第 3 章 MySQL 存储引擎简介
第 3 章 MySQL 存储引擎简介 前言 3.1 MySQL 存储引擎概述 MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一.他的前身就是我们在 ...
- 7.Mysql存储引擎
7.表类型(存储引擎)的选择7.1 Mysql存储引擎概述 mysql支持插件式存储引擎,即存储引擎以插件形式存在于mysql库中. mysql支持的存储引擎包括:MyISAM.InnoDB.BDB. ...
- MySQL性能调优与架构设计——第3章 MySQL存储引擎简介
第3章 MySQL存储引擎简介 3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所 ...
- Mysql存储引擎的选择
Mysql存储引擎概述 mysql的存储引擎是插件式的,用户可以根据需求选择如何存储和索引数据是否使用事务等. Mysql支持多种存储引擎,用户可以选择不同的引擎来提高应用的效率,灵活的存储方案,存储 ...
- MySQL体系结构和存储引擎概述
MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...
- Mysql存储引擎概念特点介绍及不同业务场景选用依据
目录 MySQL引擎概述 1 MySAM引擎介绍 2 什么是InnoDB引擎? 3 生产环境中如何批量更改MySQL引擎 4 有关MySQL引擎常见企业面试题 MySQL引擎概述 Mysql表存储结构 ...
- mysql存储引擎的种类与差别(innodb与myisam)
查找数据库的存数引擎: show engines show variables like '%storage_engine%' 更改数据库的引擎更改配置文件/etc/my.cnf 改动default- ...
随机推荐
- 无法加载协定为xx的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
当在vs 2008中添加服务引用后,如果"更新"服务引用,或"删除"该服务引用后再次加入后,在运行时会出现此错误.这是因为在"更新/删除"服 ...
- easyUI的控件
CSS类定义: div easyui-window window窗口样式 属性如下: 1) modal:是否生成模态窗口.tru ...
- java8 中的时间和数据的变化
java8除了lambda表达式之外还对时间和数组这两块常用API做想应调整, Stream 有几个常用函数: store 排序 (a,b)-> a.compareTo(b) 排出来的结果是正 ...
- python学习笔记-(八)装饰器、生成器&迭代器
本节课程内容概览: 1.装饰器 2.列表生成式&迭代器&生成器 3.json&pickle数据序列化 1. 装饰器 1.1 定义: 本质上是个函数,功能是装饰其他函数—就是为其 ...
- C#------如何取出exe运行文件给客户使用
1.将解决方案配置里面的“Debug”转换成“Release” 2.右击“解决方案”,选着“重新生成解决方案”,以得到最新的版本 3.找到工程目录下的“bin”文件夹,里面有“Release”文件夹, ...
- php操作redis
redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了.查个东西搜半天,下面整理一下php处理redis的例子,个人觉得常用一些例子.下面的例子都是基于php-redis这个扩展的. 1, ...
- Java排序算法——插入排序
import java.util.Arrays; //================================================= // File Name : Select_S ...
- 监控web页面的性能指标。
监控一个web页面的性能也是非常重要的,h5提供了一个非常好的属性来监控: window.performance 它有两个成员: navigation (一个叫做performanceNavi ...
- ecshop 获取某个商品的 所有订单信息 或者销量
把一下代码放到 lib_main.php 1.统计某个下单商品的人数 function get_goods_ordernum($goods_id){ $sql = "select count ...
- 集成EaseUI报错 环信3.1.5,托入EaseUI后,系统文件报错
一托入EaseUI的文件夹,就各种系统报错,NSObject文件也错了,不能编译UIKit头文件…………………… 解决方案以及参考文档 http://www.jianshu.com/p/291ac34 ...