MySQL是最受欢迎的开源SQL数据库管理系统,由Oracle Corporation开发,分发和支持。mysql
MySQL网站(http://www.mysql.com/)提供有关MySQL软件的最新信息。sql
逻辑分层数据库
下面是MySQL的逻辑分层图:缓存
链接层:链接与线程处理,这一层并非MySQL独有,通常的基于C/S架构的都有相似组件,好比链接处理、受权认证、安全等。安全
服务层:包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现。架构
引擎层:负责数据存储,存储引擎的不一样,存储方式、数据格式、提取方式等都不相同,这一部分也是很大影响数据存储与提取的性能的;对存储层的抽象。并发
存储层:存储数据,文件系统。分布式
存储引擎函数
存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行建立、查询、更新和删除数据。不一样的存储引擎提供不一样的存储机制、索引技巧、锁定水平等功能,使用不一样的存储引擎,还能够 得到特定的功能。如今许多不一样的数据库管理系统都支持多种不一样的数据引擎;特别提示:存储引擎针对于数据表。高并发
查看数据库支持的存储引擎:show engines;
看到MySQL给用户提供了这么多存储引擎,包括支持事务的引擎和不支持事务的引擎。
若是要想查看数据库默认使用哪一个引擎,能够经过使用命令: show variables like '%storage_engine%';
举例:建立表,默认的存储引擎(InnoDB)
建表语句
create table default_table(
id int auto_increment,
name varchar(10) not null,
primary key(id)
);
查看建表语句
show create table default_table;
举例:建立表并指定存储引擎(MyISAM)
create table define_table(
id int auto_increment,
name varchar(10) not null,
primary key(id)
)engine=myisam;
InnoDB,MyISAM的主要区别:
InnoDB:在MySQL5.5开始做为默认的存储引擎,支持事务,行级锁,适合高并发场景,XA协议支持分布式事务。
MyISAM:不支持事务,性能优先,表级锁,不适合高并发场景。
举例(可能不恰当):经过count(0)简单分析InnoDB和MyISAM性能区别,explain/desc是分析sql语句的关键字
default_table表的存储引擎为InnoDB,count(0)须要扫描表;
define_table表的存储引擎为MyISAM,count(0)不须要扫描表,MyISAM将表的记录数单独存储,性能要优于InnoDB。