mysql基础之-mysql存储引擎概述(八)
0x01
mysql 存储引擎:存储引擎也通常被称作“表类型”
mysql> show engines; --- 查看当前所有所支持的存储引擎
mysql> show table status
存储引擎格式:
SHOW TABLE STATUS [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
mysql> show table status in hellodb where Name='class'\G
Name 表名
Engine 存储引擎
Version:版本
Row_format:行格式
{DEFAULT|DYNAMIC|FIXED|COMMPRESSED|REDUNDANT|COMPACT}
Rows:表中的行数
Avg_row_length:平均每行包含的字节数
Data_length:表中数据总体大小,单位为字节
Max_data_length:表能够占用的最大空间,单位为字节,0表示么有上限
Index_length:索引的大小,单位为字节
Data_free:对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间
Auto_increment:下一个AUTO_INCREMENT的值
Create_time:表的创建时间
Update_time: 表数据的最后一次修改时间
Check_time: 使用CHECK TABLE或myisamchk最近一次检查表的时间
Collation:排序规则
Checksum:如果启动,则为表的checksum
Create_options:创建表时指定使用的其他选项
Comment:表的注释信息
InnoDB
两种格式:
1.innodb_file_per_table=OFF,即是用共享表空间
每个表一个独有的格式定义文件:tb_name.frm
还有一个默认位于数据目录下的共享的表空间文件:ibdata#
2.innodb_file_per_table=ON,即是用独立表空间
每个表在数据库目录下存储两个文件
tb_name.frm
tb_name.ibd
MyISAM:
每个表都在数据库目录下存储三个文件
tb_name.frm
tb_name.MYD
tb_name.MYI
表空间: table space ,由InnoDB管理的特有格式数据文件,内部可同时存储数据和索引
如何修改默认存储引擎:通过default_storage_engine服务变量实现
各存储引擎的特性:
InnoDB:
支持事务,有事务日志
ib_logfile0
ib_logfile1
支持外键约束
支持MVCC(多版本并发控制)
支持聚簇索引
聚簇索引之外的其他索引,通常称之为辅助索引
行级锁:间隙锁
支持使用辅助索引
支持自使用hash索引
支持热备份
MyISAM:
全文索引
支持表压缩存放:做数据仓库,能节约存储空间并提升性能
支持空间索引
表级锁
延迟更新索引
不支持事务、外键和行级锁
崩溃后无法安全恢复数据
使用场景:只读数据,表较小,能够忍受崩溃后的修复操作和数据丢失
mysql数据库其他存储引擎
ARCHIVE
仅支持INSERT和SELECT,支持很好压缩功能
应用于存储日志信息,或其他按照时间序列实现的数据采集类的应用
CSV:
将数据存储为CSV格式,不支持索引,仅使用与数据交换场景
BLACKHOLE:
没有存储机制,任何发往次引擎的数据都会丢弃,其会记录二进制日志,因此,常用于多级复制架构中作中转服务器
MEMORY:
保存数据在内存中,内存表;常用于保存中间数据,如周期性的聚合数据等,也用于实现临时表
支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型
MRG_MYISAM:
是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表
NDB:
是MySQL CLUSTER中专用的存储引擎、
第三方的存储引擎
OLPT
XtraDB:增强的InnoDB,有Percona提供,编译安装时,下载XtraDB的源码替代MySQL存储引擎中的InnoDB的源码
PBXT:MariaDB自带此存储引擎
支持引擎级别的复制、外键约束,对SSD磁盘提供适当支持
支持事务、MVCC
TokuDB:使用 Fractal Trees索引,适用存储大数据,拥有很好的压缩比,已经被引入MariaDB
列式数据存储引擎:
Infobright:目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计
InfiniDB
MonetDB
LucidDB
开源社区存储引擎:
Aria:前身为Maria,是增强版的MyISAM(支持崩溃后安全恢复,支持数据缓存)
Groona:全文索引引擎
Mroonga:是基于Groona的二次开发版
OQGraph:由open query研发,支持图(网状 )结构的存储引擎
SphinxSE:为Sphinx全文搜索服务器提供了SQL接口
Spider:能将数据切分成不同的分片,比较高效透明的实现了分片(shared),并支持在分片上支持并行查询
根据具体需要如何选择选择mysql存储引擎
是否需要事务
备份的类型的支持
崩溃后的恢复
特有的特性
索引类型:
聚簇索引
辅助索引
B树索引
R树索引
hash索引
全文索引
mysql基础之-mysql存储引擎概述(八)的更多相关文章
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...
- MySQL体系结构和存储引擎概述
MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...
- MySQL存储引擎概述
一.MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的. 二.各种存储引擎的特性 (A) MyISAM :不支持事务.不支持外键.访问速度快. 每个MyI ...
- 《MySQL命令执行过程和存储引擎概述》阅读笔记
使用MySQL的完整过程: 启动MySQL服务器程序. 启动MySQL客户端程序并连接到服务器程序. 在客户端程序中输入一些命令语句发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具 ...
- MySQL内核:InnoDB存储引擎 卷1
MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...
- mysql不同版本和存储引擎选型的验证
Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路. 主要涉及: Mysql的版本 v Mariadb v Tokudb v Orac ...
- (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...
- mysql————表类型(存储引擎)的选择
表类型(存储引擎)的选择 7.1 mysql存储引擎概述 插件式存储引擎是mysql数据库最重要的特性之一,用户可以根据应用的需要选择ruhr存储和索引数据,是否使用事务等. InnoDB和BDB提供 ...
- MySQL技术内幕InnoDB存储引擎(表&索引算法和锁)
表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...
随机推荐
- Python内置函数示例
abs() 返回数字绝对值 >>> abs(-100) 100 >>> abs(10) 10 >>> all() 判断给定的可迭代参数 itera ...
- spring boot+mybatis搭建项目
一.创建spring boot项目 1.File->New->Project 2.选择 Spring Initializr ,然后选择默认的 url 点击[Next]: 3.修改项目信息 ...
- spark机器学习从0到1特征变换-标签和索引的转化(十六)
一.原理 在机器学习处理过程中,为了方便相关算法的实现,经常需要把标签数据(一般是字符串)转化成整数索引,或是在计算结束后将整数索引还原为相应的标签. Spark ML 包中提供了几个相关的转换器 ...
- class.getFields和class.getDeclareFields的区别
class.getFields的定义 返回类提供的public域包括超类的共有变量; 注: 是public,我们平时定义变量一般用的private,如果用getFields是不会获得. class.g ...
- 流复制-pg_basebackup (有自定义表空间)
一.组成部分 1.walsender进程是用来发送WAL日志记录的 2.walreceiver进程是用来接收WAL日志记录的 3.startup进程是用来apply日志的 二.主库配置 1.授权账号, ...
- mysql基本操作汇总
1.数据库操作 (1)创建数据库 CREATE DATABASE <数据库名>; 例子: CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHAR ...
- UILabel折行问题 从文件输入文本
当内存的字符串对象中有\n时,该字符串会在UILabel展示时进行折行. 如果字符串是从plist中拿到的 1,字符串在plist中输入时打入过回车(即字符串在plist中展示也是折行的),那么字符串 ...
- hdu6314 容斥+数学
题意 : n*m的矩阵 可以涂黑白两色 问至少A行B列为黑色的涂色方案种类数,答案对998244353取模,1<=n,m,A,B<=3000 题解: ans=sum{A,..n}sum( ...
- BZOJ1066 网络流
拆点,将一个柱子拆成入点和出点,入点出点之间的容量就是柱子的容量 1066: [SCOI2007]蜥蜴 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多 ...
- Swiper的jquery动态渲染不能滑动
<!-- 下面俩行代码就是解决异步加载数据导致swiper不轮播的关键 --> observer: true,//修改swiper自己或子元素时,自动初始化swiper observePa ...