一、什么是MySql?mysql
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。一般意义上,数据库也就是数据的集合,具体到计算机上数据库能够是存储器上一些文件的集合或者一些内存数据的集合。sql
MySQL同时也是客户端/服务器系统而且是单进程多线程架构的数据库,并采用通信协议的半双工机制(发出的东西不容许中途被截断,没法进行流程控制)。目前它能够提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。MySql区别于其它数据库系统的一个重要特色是支持插入式存储引擎。数据库
二、什么是存储引擎?安全
存储引擎说白了就是如何存储数据、如何为存储的数据创建索引和如何更新、查询数据等技术的实现方法。由于在关系数据库中数据的存储是以表的形式存储的,因此存储引擎也能够称为表类型(即存储和操做此表的类型)。服务器
MySql数据库提供了多种存储引擎(插件式),用户能够根据不一样的需求为数据表选择不一样的存储引擎,用户也能够根据本身的须要编写本身的存储引擎。数据结构
三、MySQL中有哪些存储引擎?多线程
1)、默认存储引擎:架构
MyISAM:(最先提供的)并发
特色:ide
支持全文索引、压缩、空间索引(空间函数)、表级锁、延迟更新索引键
不足:
不支持事务和行级锁、崩溃后没法安全恢复
存储结构:
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: 支持垂直分区
四、MySql中关于存储引擎的操做
1)、查看数据库能够支持的存储引擎
mysql> show engines; (老版本默认引擎为MyISAM)
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,文中有错误之处,还请你们多多指导!