MySql学习之 -- 存储引擎


1、什么是MySql?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。

MySQL同时也是客户端/服务器系统并且是单进程多线程架构的数据库,并采用通讯协议的半双工机制(发出的东西不允许中途被截断,无法进行流程控制)。目前它可以提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。MySql区别于其它数据库系统的一个重要特点是支持插入式存储引擎。


2、什么是存储引擎?

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

MySql数据库提供了多种存储引擎(插件式),用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。


3、MySQL中有哪些存储引擎?

1)、默认存储引擎:

MyISAM:(最早提供的)

特点:

支持全文索引、压缩、空间索引(空间函数)、表级锁、延迟更新索引键

不足:

不支持事务和行级锁、崩溃后无法安全恢复

存储结构:

tbname.frm (数据结构)

tbname.MYD (数据)

tbname.MYI (索引)

应用场景:多应用只读数据(当数据仓库,适合读多写少的应用场景)、较小的表、能够忍受修复操作


InnoDB

特点:

支持事务(事务日志)、外键、MVCC(多版本并发控制)、采用聚簇索引 (索引与数据块存放在一起)、辅助索引、自适应hash索引、支持热备(MySQL Enterprise Backup, Percona Xtrabackup)、行级锁、间隙锁

存储结构:

tbname.frm (数据结构)

ibdata1 (默认共享表空间)

tbname.ibd (表空间,数据+索引)

建议每个表使用自己独立的表空间,开启方法:set global innodb_file_per_table=1;


ARCHIVE:

仅支持INSERT和SELECT,不支持索引但支持很好的压缩功能;

适用于存储日志信息,或其它按时间序列实现的数据采集类应用;

CSV:

将数据保存为CSV格式(文本格式,会丢失精度),不支持索引,仅适用数据交换;

MEMORY:

内存存储引擎,比MyISAM至少快一个数量级(一般10倍),通常用于实现临时表(无法提供数据的持久化);

BLACKHOLE:

没有存储机制,任何数据都会被丢弃,但是会记录二进制日志;

FEDERATED:

访问远程服务器上数据的存储引擎;FederatedX

可以在数据非常大的时候起到分发表或者库到不同的服务器,减少每个服务器的IO

MRG_MYISAM:

合并多个MyISAM表的存储引擎;(以后可能会被弃用)


b、第三方存储引擎:

OLTP类:

OLTP 与 OLAP:

OLTP是面向顾客的,用于事务和查询处理(需要并行和恢复机制)

OLAP是面向市场的,用于数据统计分析(大部分是只读操作)

XtraDB;

PBXT;

TokuDB: 支持分形树索引结构;

列式存储引擎:

Infobright: (查询性能高,存储数据量大...)

InfiniDB:

MonetDB:

LucidDB:

社区存储引擎:

Aria:

Groona: 全文索引引擎

QQGraph: 支持图, 由Open query研发

SphinxSE:

Spider: 支持分片(shard)

VPForMySQL: 支持垂直分区


4、MySql中关于存储引擎的操作

1)、查看数据库可以支持的存储引擎

mysql> show engines; (老版本默认引擎为MyISAM)

023657556.png

2)、查看表的结构等信息的若干命令

desc tablename; #查看数据表的结构

show create table tablename; #显示表的创建语句

show table status like ‘tablename’\G; #显示表的当前状态值

3)、设置或修改表的存储引擎

create table tableName( columnName(列名1) type(数据类型) attri(属性设置),……) engine = engineName #设置

alter table tableName engine = engineName; #修改


小结:本文主要介绍了什么是MySql数据库,并进一步引出了它的一个重要特性, 即插入式的多存储引擎机制。然后,简单介绍了什么是存储引擎和MySql中几种主要的存储引擎。最后,介绍了如何查看数据库支持的所有存储引擎,如何查看数据库表的存储引擎类型及如何设置或修改表的存储引擎类型。刚刚入门学习MySql,文中有错误之处,还请大家多多指导!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章