tsql是mysql中的吗_Mysql中的sql是如何执行的

MySQL中的SQL是如何执行的

MySQL是典型的C/S架构,也就是Client/Server架构,服务器端程序使用的mysqld.整体的MySQL流程如下图所示:

2c5beddd0c4e224a30e4e7b594487c24.png

MySQL是有三层组成:

连接层: 负责客户端与服务器端建立连接,客户端发送SQL至服务端;

SQL层: 对SQL语句进行查询处理;

存储引擎层: 与数据库文件打交道,负责数据的存储和读取.

其中,SQL层与数据库文件的存储方式无关,我们来看下SQL层的架构:

7d0d93112140c04c095013de65b40d44.png

查询缓存: Server如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段.格外注意的是,因为查询缓存往往效率不高,所以在MySQL8.0之后就抛弃了缓存.

解析器: 在解析器中对SQL语句进行语法分析和语义分析.

优化器: 在优化器中会确定SQL语句的执行路径,比如说是根据全表检索,还是根据索引来检索等.

执行器: 在执行前需要判断用户是否具备权限,如果具备权限就执行SQL查询并返回结果.在MySQL8.0以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存.

SQL语句在MySQL中的流程是: SQL语句 -> 缓存查询 -> 解析器 -> 优化器 -> 执行器.

说说存储引擎,MySQL的存储引擎采用了插件的方式,每个存储引擎都面向一种特定的数据库应用环境.同事MySQL还允许开发人员设置自己的存储引擎.下面列举常见的存储引擎:

InnoDB存储引擎: 是MySQL5.5.8版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外键约束等.

MyISAM存储引擎: 在MySQL5.5.8版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少.

Memory存储引擎: 使用系统内存作为存储介质,以便得到更快的响应速度.不过如果mysqld进程崩溃,则会导致所有的数据丢失,因此只有当数据是临时数据的情况下才会使用Memory引擎.

NDB存储引擎: 也叫做NDB Cluster存储引擎,主要用于MySQL cluster分布式集群环境,类似于Oracle的RAC集群.

Archive存储引擎: 有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以经常用来做仓库.

注意,数据库的设计在于表的设计,所以MySQL中每个表的设计都可以采用不同的存储引擎,可以根据实际情况的数据处理需要来选择存储引擎,这个是MySQL强大的地方.

数据库管理系统也是一种软件

完成的MySQL结构图如下:

f21db75602c9d80f2b59016cfdd2b3a8.png

profiling的使用,开启profiling可以让MySQL收集在SQL执行时所使用的资源情况,命令如下

select @@profiliong;

返回结果如果是0表示关闭,如果是1表示打开.可以使用 set profiling = 1;将profiling打开.

接下来可以执行sql语句,然后使用 show profiles来查询当前会话产生的所有peofiles.

0f0f93cc13703c3deb56f17d2b0cb7e3.png

前面会有query_id,可以使用show profile;获取上次查询执行的时间,或者使用show profile for query id;查询指定的query id执行的时间.

当然还有oracle的执行过程,这个暂时不研究.

aa058cddebeb22ffee0455802e6eae7a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件质量特性测试

针对软件质量特性进行测试,可以避免重大漏测,一般人我不告诉他。《软件工程—产品质量》(GB/T 16260-2006)中规定对软件的每个质量特性与子特性都有定义:一、功能性:是指当软件在指定条件下使用&#xff0c…

PHP array_pop()函数与示例

PHP array_pop()函数 (PHP array_pop() function) array_pop() function is used to delete/pop last element from the array. array_pop()函数用于从数组中删除/弹出最后一个元素。 Syntax: 句法: array_pop(array);Here, array is the input array, function w…

网站关停就没事了?5100万账户文件被盗

曾经是美国三大音乐视频文件共享软件之一的imesh,意外倒闭。而更意外的是,就在近日,imesh这款已经倒闭的软件,5100万账户开始在暗网被黑客拍卖。 Imesh这款软件是美国纽约的老牌音乐视频分享软件之一,早在2000年前便已…

数据库表设计索引外键设计_关于索引的设计决策 数据库管理系统

数据库表设计索引外键设计Introduction: 介绍: The attributes whose values are required inequality or range conditions and those that are keys or that participate in join conditions require access paths. 其值为必需的不等式或范围条件的属性以及作为键…

接口测试从零开始系列_mock技术使用

1、什么情况下会使用mock技术 (1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑 ----------比如被测代码中需要依赖第三方接口返回值进行逻辑处…

amie 规则挖掘_AMIE的完整形式是什么?

amie 规则挖掘AMIE:工程师协会的准会员 (AMIE: Associate Member of the Institution of Engineers) AMIE is an abbreviation of Associate Member of the Institution of Engineers. The Institution of Engineers India Limited (IEIL) provides this profession…

java 马克思_单链表-Java

public class SinglyListNode {int val;SinglyListNode next;SinglyListNode() {}SinglyListNode(int x) {this.val x;}}/*执行用时:12 ms, 在所有 Java 提交中击败了66.93%的用户内存消耗:39.5 MB, 在所有 Java 提交中击败了5.06%的用户*/class MyLink…

python的pass语句_Python | 演示pass语句的示例

python的pass语句python中的pass语句 (pass statement in python) "pass" is a type of null operation or null statement, when it executes nothing happens. It is used when you want do not want to write any code/statement to execute but syntactically a …

HDS:聚焦未来的投资“冻结”

一家日本IT网站报道的有关HDS冻结对高端存储产品的投资一事引发众议。让人陷入疑惑的这次声明就是,HDS认为单纯的阵列产品并非企业存储的未来。 6月1日,IT Pro Nikkei网站发布了一篇报道,内容援引HDS一份表示将冻结高端存储业务的简报。这引发…

java js对象转字符串数组_JS数组转字符串(3种方法)【转】

JavaScript 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如表所示。数组方法说明toString()将数组转换成一个字符串toLocalString()把数组转换成本地约定的字符串join()将数组元素连接起来以构建一个字符…

中美共建大数据创新研究中心

由贵阳市人民政府、工信部电子一所、美国加州大学伯克利分校合作共建的贵州伯克利大数据创新研究中心日前在贵阳揭牌。 据了解,贵州伯克利大数据创新研究中心将分两阶段建设。第一阶段,2016年9月份至2017年底,将重点完成“学龄儿童大数据分析…

Python中的__init__和self是做什么的?

The __init__ and self are two keywords in python, which performs a vital role in the application. __init__和self是python中的两个关键字,在应用程序中起着至关重要的作用。 To begin with, it is important to understand the concept of class and object…

Palo Alto Networks漏洞防护扩展至云端

中国北京,2016年4月12日 –下一代安全企业Palo Alto Networks?(纽交所代码:PANW)近日宣布进一步增强其下一代安全平台,扩展漏洞防护能力,以满足那些依赖云环境和SaaS应用的业务对安全的需求。 企业机构需要变得更加灵活和有竞争力…

java 嵌套调用_Java嵌套类的使用

嵌套类是指被定义在另一个类内部的类,它为外部类提供服务。嵌套类分四种:静态成员类、非静态成员类、匿名类和局部类。一、静态成员类与非静态成员类的区别?在什么情况下可以用静态成员类?我们知道在类的设计中,为了避…

c语言getenv函数_getenv()函数与C ++中的示例

c语言getenv函数C getenv()函数 (C getenv() function) getenv() function is a library function of cstdlib header. It is used to get the environment string. It accepts a parameter which is an environment variable name (platform dependent, it may either case s…

isless()函数与C ++中的示例

C isless()函数 (C isless() function) isless() function is a library function of cmath header, it is used to check whether the given first value is less than the second value. It accepts two values (float, double or long double) and returns 1 if the first …

停牌17个月 汉能薄膜真的要复牌了?

最近,停牌超过一年的汉能薄膜又有新进展。 10月7日,路透社引述知情人士的消息称,香港证监会或将允许汉能薄膜发电复牌,不过复牌的前提是需汉能将符合一些特定条件。 该消息人士透露,证监会告知汉能,若要恢复…

hive java udf_UDF_Hive教程_田守枝Java技术博客

UDF是User-Defined Functions(用户定义函数)的简称。通过以下命令可以查看HIVE中函数的相关文档:SHOW FUNCTIONS;DESCRIBE FUNCTION ;DESCRIBE FUNCTION EXTENDED ;1、UDF函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容。…

python 示例_带有示例的Python列表remove()方法

python 示例列出remove()方法 (List remove() Method) remove() method is used to remove the first occurrence of the given element, the method is called with this list (the list from which we have to remove the element) and accepts the element to be removed as…

车联网领域,传统TSP企业做错了什么 ?

当下,车联网的定义更加丰富和宽泛,除了传统意义上的Telematics服务,数字服务、移动出行服务、电商平台等将被融入到车联网概念中,与用车相关的维修保养、洗车、代驾等第三方服务,也将成为整车厂整合的重点被纳入到车联…