首页 > 数据库技术 > 详细

MySQL

时间:2019-08-01 10:31:19      阅读:92      评论:0      收藏:0      [点我收藏+]

MySql分为三大层组成:

一,连接层功能:

1,TCP/IP或者Socket的链接方式

2,验证用户名密码功能

3,连接线程(客服):接收SQL语句,返回执行结果

 

二,SQL层

1,语法检查模块,检查上层发过来的SQL语句,进行语法检查

2,权限检查模块,检测当前登录用户是否有权限操作数据库对象

3,语义检查模块,识别语句种类

4,解析器,解析出SQL语句所有可能的执行方式,这些方式被称为“执行计划”

5,优化器,基于执行代价(系统资源的消耗作为维度(cpu、内存、IO),管理员可以通过间接的方法,干扰优化器的选择)

6,执行器,按照优化器选择的“最优”的执行计划,执行SQL语句。得出结论:某某磁盘的某某位置,发送给存储引擎层。

7,提供查询缓存:有局限性。一般会用Redis产品来替代

8,记录查询日志

 

三,存储引擎层:

和“磁盘”(文件系统)打交道的层次

根据SQL层执行的结果,去磁盘上找到对应的数据。结构化成表的模式,返回给用户。

 

SQL语句的分类:

DDL:数据定义语言

DCL:数据控制语言

DML:数据操作语言

DQL:数据查询语言

 

MySql逻辑结构组成:

一,库(库名字,库属性)

二,表(表名字,列(列名字,列属性),表属性,表数据)

 

MySQL索引分类

存储引擎管理

一,索引管理以及原理

1,索引的种类

B树(B+tree  B*tree b-tree)

B-tree:针对某个明确值的查询

查找顺序:根节点——>枝节点——>叶子节点

B+tree:针对明确的范围的查询

缺点:无法同时包含回表查询以及其它列的查询

 

辅助索引:(B TREE)

alter table t1 add index idx_num(telnum);

怎么生成的:

根据创建索引时,指定的列的值,进行排序后,存储在叶子节点中

优点:

1,优化了查询,减少CPU 内存  IO消耗

2,减少了文件排序

 

覆盖索引:(联合索引)

通过一个索引列把需要查询的列都添加到索引树里面去

直接在索引树里面直接有,减少或尽量避免回表查询操作

优点:减少回表查询的操作的几率

聚集索引

同一等级情况下效率最高

大部分情况下辅助索引和聚集索引结合使用

辅助索引:where 条件   有id列的时候,比如id=28

随机读? 顺序读

建表时,如果有主键列,自动生成聚集索引

没有主键列,会去找unique列

优点:

减少回表查询

将随机IO转换成顺序IO

加强了缓存的应用,查询效率提升

 

2,R树

3,hash索引

4,全文索引

2,B树索引的类型

1,聚簇索引(cluster index):一般是基于主键的

2,辅助索引(普通辅助索引:回表查询;覆盖索引;不回表查询;唯一性索引)

3,唯一索引

3,索引管理

索引的作用:在mysql数据库中,索引是用来优化查询的

除缓存之外,数据的查询有两种方式:

1,全表扫描

2,索引扫描

优化器索引扫描要优于全表扫描

索引管理:

索引就是一张表

创建索引的语句:

为某张表基于某列建索引:alter table 表名 add index idx_name(列名)

 

MySQL不走索引的情况:

1,where语句后有算数计算

2,where语句后跟函数

3,查询语句中包含<>,link

 

 

MySQL存储引擎:

查看存储引擎:

show engines;

show create table world.city;

插件式,即插即用存储引擎,是在表级别设定的。

mysql5.5以后默认的是InnoDB

InnoDB与MyISAM存储引擎的区别:

MVCC: innoDB支持,MyISAM不支持

锁(行级别): innodb支持,myisam表级别

外键: innodb支持,myisam不支持

事务: innodb支持,myisam不支持

热备份: innodb支持,myisam温备份

CSR(故障断电自动恢复)innodb支持,myisam不支持

InnoDB

MVCC

事务

锁定粒度

外键

MyISAM

MEMORY(memory)

ARCHIVE(archive)

 

 

也可以使用第三方的存储引擎

TokuDB  ------>zabbix

myrocks

 

InnoDB存储引擎的物理存储方式:

表空间(TBS)的管理模式:

来自于Oracle

表存储到磁盘上是以表空间的管理模式来存储

共享表空间:类似于Oracle管理模式

独立表空间:每个表单独使用表空间存储

5.5默认:共享表空间

5.6以后:默认管理模式独立表空间存储,共享表空间也存在

 

表空间存储数据的分类:

共享表空间:ibdata1   

存了什么?

系统数据

undo日志

磁盘临时表

独立表空间:

t1.ibd  ----->t1表的数据和索引

t1.frm ------>t1表的列相关信息

表空间操作:

共享表空间:

我们建议,在数据库初始化的时候就配置好

一般建议2-3个,512M

/etc/my.cnf

innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

mysql_install_db

 

独立表空间:一个表一个ibd文件,存储表数据和索引

show variables like ‘innodb_file_per_table‘;

 

 

 

 

日志管理

备份恢复

主从复制

高可用以及读写分离

分布式系统

优化:

搜索引擎优化

SQL语句优化

MySQL

原文:https://www.cnblogs.com/Rglin/p/11280867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!