(学习笔记)MySQL——逻辑分层与存储引擎

--mysql数据分层,client 连接层:链接与县城处理,这一层并不是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语句的关键字

explain select count(0) from default_table;
explain select count(0) from define_table;

default_table表的存储引擎为InnoDB,count(0)需要扫描表;
define_table表的存储引擎为MyISAM,count(0)不需要扫描表,MyISAM将表的记录数单独存储,性能要优于InnoDB.

--mysql编写数据库设计说明文档

-- 展示对应表的所有 列名,类型,和描述
 
set @rownum=0;
SELECT @rownum:=@rownum+1 AS rownum , COLUMN_NAME AS 列名, (CASE WHEN  IS_NULLABLE = 'YES' THEN '是' ELSE '否' END) AS 是否为空,
 COLUMN_COMMENT AS 列的描述, COLUMN_TYPE AS 类型 FROM information_schema.`COLUMNS`   
WHERE  TABLE_SCHEMA = (select database()) AND  TABLE_NAME = ('art_all_sources') ORDER BY  ORDINAL_POSITION ;

-- 展示当前数据库中的所以有数据库表
set @rownum=0;
SELECT @rownum:=@rownum+1 AS rownum ,t.TABLE_COMMENT AS 描述 ,t.table_name AS 表名
FROM information_schema.`TABLES` t WHERE t.TABLE_SCHEMA = (select database()) ORDER BY t.TABLE_NAME;

猜你喜欢

转载自blog.csdn.net/qq_30007885/article/details/90174740