首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析

    但是,在 MySQL 的执行过程中,词法分析和语法分析是融合在一起的,是一个你中有我,我中有你的过程。...后面的内容中,Item_field 类以及其子类的实例都会直接说成 Item_field 类实例。...普通字段就直接用 Item_field 类实例化。 词法分析 & 语法分析阶段,各字段只是完成了 Item_field 类的实例化,但是还没有对应到表中真实的字段。...要等到查询准备阶段,Item_field 类实例才会去找妈妈,找到妈妈之后,Item_field 类实例中的 field 属性会指向找到的 Field 类(或子类)实例,从此以后,小蝌蚪和妈妈就过上了幸福快乐的生活...Item_func_gt 类实例有一个比较重要的属性 func,是个函数指针,它是用来执行 i1 字段和 49276 之间的比较的,但是,此时,MySQL 并不知道 i1 字段是什么类型,不知道该怎么比较它们两个谁大谁小

    1.5K20

    python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04

    面向对象的内置魔法函数 __str__ ''' __str__ 会在对象被转为字符串时,转换的结果就是这个函数的返回值 使用场景:我们可以利用该函数来自定义,对象是打印格式 ''' class...,name:jack,age:10 __del__ # del 析构函数 (__init__ 构造函数) # 执行时机:手动删除对象时立马执行,或是程序运行结束时也会自动执行(垃圾回收机制?)...上下文:这个概念属于语言学科,指的是一段话的意义,要参考当前的场景,即上下文 在python中,上下文可以理解为一个代码区间,一个范围,例如with open 打开的文件仅在这个上下文中有效 上下文涉及到的两个方法...__enter__:表示进入上下文(进入某个场景了) __exit__:表示退出上下文(离开了某个场景了) ​ 案例 class MyOpen: def __enter__(self):...__exit__ 函数可以有返回值,是一个bool类型,用于表示异常是否被处理,仅在上下文中出现异常时有用 如果为True 则意味着,异常已经被处理了 False 异常未被处理,程序将中断报错

    68240

    MySQL 简单查询语句执行过程分析(二)查询准备阶段

    本文是 MySQL 简单查询语句执行过程分析 6 篇中的第 2 篇,第 1 篇请看这里: MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析 这一篇主要讲的内容是一条简单查询语句,在查询准备阶段会干哪些事情...研究源码之前,我想象中的打开表就是读取 frm 文件中的信息,构造出来一个对象啥的,然后就没有然后了,不知道正在看文章的你想象中的打开表的过程是什么样的呢?...没错,MySQL 中就是用缓存的思想实现的,而且是本机内存缓存,效率极高。天下武功,唯快不破,为了快的极致,MySQL 还不只用了一级缓存,而是用了两级缓存。...遍历完表中所有字段之后,形成一个 Item_field 列表,替换掉星号(*)对应的 Item_field 列表就行了,至此,就完成了 select 语句中星号替换为表字段的过程了。 3....然而,还有一点要补充的,就是 i1 字段和常数 49276 比较时执行的比较函数也是在填充 where 条件这一步中确定下来的,因为 Item_field 类实例找到对应的 Field 子类实例之后,i1

    1.1K20

    MySQL 怎么用索引实现 group by?

    本文我们一起来探寻 MySQL 使用索引实现 group by 的过程,使用临时表实现 group by 会单独用一篇文章来介绍。 本文内容基于 MySQL 5.7.35 源码。...args,avg() 函数的参数,avg() 只能有一个参数。args[0] 为 i1 字段对应的 Item_field 类实例。...查询准备阶段(prepare 阶段),i1 字段对应的 Item_field 类实例会关联到表 t_group_by 的 i1 字段。...args,min() 函数的参数,args[0] 为 i1 字段对应的 Item_field 类实例。...MySQL 把紧凑索引扫描中使用的顺序读取记录嵌入到松散索引扫描的逻辑里,当评估紧凑索引扫描成本比松散索引扫描低时,对于包含 distinct 关键字的聚合函数,就会用顺序读取记录代替跳着读取记录,并且在顺序读取记录的过程中完成记录去重

    4.9K20

    MySQL源码分析之SQL函数执行

    1.MySQL中执行一条SQL的总体流程 2.SQL函数执行过程 ---- 1.MySQL中执行一条SQL的总体流程 一条包含函数的SQL语句,在MySQL中会经过: 客户端发送,服务器连接,语法解析,...Item_func_to_char * const this, THD * thd) (/home/bob/work/percona-server/sql/item_timefunc.cc:3821) 2 Item_func::fix_fields...Item_func * const this, THD * thd) (/home/bob/work/percona-server/sql/item_func.cc:309) 3 Item_str_func::fix_fields...Debezium的基本使用(以MySQL为例) MySQL Server可执行注释 使用SkyWalking监控MySQL(一)工具与方案 ---- 关于 GreatSQL GreatSQL是由万里数据库维护的...MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

    83370

    MySQL中sp运行check表版本更新流程解析

    一、MySQL的sp运行SQL语句两个步骤介绍 二、代码跟踪 三、知识应用 四、总结 ---- 一、MySQL的sp运行sql语句两个步骤介绍 MySQL的sp运行SQL语句需要执行2个步骤:prepare...第一次执行的时候先执行prepare,进行相关语句parse、itemize、fix_fields等操作,然后才开始进行execute操作。...但是表结构变更后在哪里被判定为rc=true的呢,那就从reset_lex_and_exec_core这个函数继续跟踪下去。.../sql/sp_head.cc:2977 #可以发现open_tables函数调用了这个函数,这个函数调用了ask_to_reprepare, #在sp运行中这个ask_to_reprepare返回的是...四、总结 在MySQL的sp操作中涉及表操作的sql语句一定会执行check_and_update_table_version这个函数,每次会根据这个函数的结果来确定要不要重新parse该sql语句,如果没有版本改变就直接进行

    98130

    Asp.Net Core 轻松学-使用MariaDBMySqlPostgreSQL和支持多个上下文对象

    和 PostgreSQL 数据库,同时,在一个项目中,如何添加多个数据库上下文对象,并在业务中使用多个上下文对象,通过这两章的学习,你将掌握使用 EFCore 连接 MSSQL/MariaDB/MySql...闲话说完,进入今天的正题,连接第三方数据库和支持多个上下文对象。 1. 使用 MariaDB/MySql 数据库 MariaDB基于MySQL并遵循GPL v2授权使用的。...,只是声明了一个 MySqlForumContext 对象,然后继承自 DbContext ,并将 Topic 和 Post 实体对象映射到该上下文中,这个使用方式和之前的文章中连接 MSSQL 数据库的使用方式是完全一致的...Context 对象即可 3.2 使用两个上下文对象进行 CURD 操作 下面将演示使用 MySqlForumContext 和 NPgSqlForumContext 进行简单的 CURD 操作,这个操作过程和上一篇的...数据库, 如何创建多个 Migrations 对象 如何在项目中使用多个不同的上下文对象 演示代码下载 https://github.com/lianggx/EasyAspNetCoreDemo/tree

    2.4K51

    因为喜欢所以升级,MyStaging-3.0 继续

    数据库 提供程序 PostgreSQL MyStaing.PostgreSQL Mysql MyStaging.Mysql 迁移过程 当你进行数据库关系迁移后,MyStaging会在指定的路径上生成实体对象文件目录...:Model,该目录包含了数据库上下文对象 xxxDbContext 和实体对象的文件,以 /examples/Mysql 项目为例子,执行迁移后,将生成 Model/MysqlDbContext.cs...,该文件即为上下文对象;相反的,可以使用了CodeFirst进行 Model 实体对象的迁移,MyStaging 会检查指定程序集的实体对象,当发现对象携带 TableAttribute 特性时,MyStaging...初始化 DbContext 上下文对象时,要求传入一个配置 StagingOptions,该 StagingOptions 包含了一些必须和可选的配置 public StagingOptions(string...如果你配置了日志和缓存,MyStaging将在某些场景下启用该设置,比如针对查询单个对象的主键缓存,缓存还支持分布式缓存(IDistributedCache) 最终初始化上下文对象 // 控制台应用程序

    93820

    Py测开《操作mysql的上下文管理器代码详解、多态和私有属性含义的总结》

    目录 一、实现一个操作mysql的上下文管理器(可以自动断开连接) 1.代码 2.操作mysql的上下文管理器代码详解 3.cur.fetchone()与cur.fetchall()的区别 二、描述__...一、实现一个操作mysql的上下文管理器(可以自动断开连接) 1.代码 import pymysql class DB: # 数据库操作的上下文管理器。...数据库 2.操作mysql的上下文管理器代码详解 一个类里面只要实现了__enter__和__exit__方法,这个类所创建出来的对象就是个上下文管理器对象了。...通过with可以触发上下文管理器。上下文管理器对象会自动调用里面的__enter__方法。 实现一个操作数据库的上下文,当我们触发这个上下文管理器的时候,这个时候会返回一个操作数据库的游标。...在函数里只需要指定父类这种类型的对象就行了,传的是哪个子类不用管,只要是这个父类就行了。 在每个子类里面实现不同的方法,通过这个对象调用同一个方法。

    36740

    OB 开发 | ActionDB 扩展 OB GIS 能力:新增 ST_PointN 函数

    1ST_PointN 函数介绍 ST_PointN 函数用于在给定的几何对象中提取第 N 个点,常用于几何对象分析和地理信息系统(GIS)中。...ST_PointN 函数接受一个几何对象(如线或多边形)和一个索引 N,返回该几何对象的第 N 个点。该函数的主要作用是帮助用户从复杂的几何对象中提取具体的点,以便进行进一步的地理分析或处理。...eval_st_PointN:检查所生成的 GIS 对象是否合法,检查 GIS 元数据与 GIS 上下文。 调用 ObGeoTypeUtil 工具类的各个检查接口。...设置 GIS 函数执行所需的 GIS 对象与 GIS 上下文(gis_ctx),并检查 GIS 相关对象有效。...ActionDB 的 MySQL 8.0 协议全面兼容能力,辅以基于 MySQL binlog 的双向复制技术,为业务系统与下游数据平台提供了安全无虞、无缝迁移的完美方案,确保数据迁移的零风险与无感知。

    8210
    领券