最新要闻
- 专访:美国操纵G7干预别国事务——访巴西圣保罗州立大学教授保利诺 环球观点
- 环球看热讯:Apple Watch表带为何那么贵?原因揭开
- 理想“L6” 被长城给抢先造出来了:仅售23万!
- 天天新动态:小米汽车多项高层职务调整:前麦格纳高管黄振宇接管汽车供应链
- 全球速看:百度网盘内测大模型版云一朵智能助理:翻译、找图一句话搞定
- 599元 联想小新24 FHD高刷屏上架:100Hz刷新率 硬件级护眼_世界快资讯
- 今年618最值得买的手机:华为Pocket S限时优惠1000元、12期分期免息 天天即时
- 西游记主题公园游客吵架“牛魔王”劝架 幸运没人受伤:网友吐槽素质不如妖怪
- 蔷薇适合种在庭院什么地方?庭院种蔷薇如何养护?
- 国际清算银行:必须加强监管以防止更多银行倒闭|当前报道
- 热文:幼儿园摆20桌请200孩子吃席庆六一:每桌有龙虾、烧鸡、牛肉
- 还因续航焦虑不敢买电车吗?极氪001千里续航版交付:纯电1032km-世界动态
- 原价300元:星巴克家享黑咖啡10包25元大促(不到1折)-环球看点
- 天天即时:捷豹路虎发布全新品牌Logo!路虎车标从此成“遗产”
- 学生网购小石头收到7斤巨石 画面很荒谬很搞笑:网友笑谈赚了 当前信息
- 每日讯息!光华股份:公司电子封装材料用聚酯树脂目前处于小批量试产阶段,进展良好,已形成少量销售
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
执行计划缓存,Prepared Statement性能跃升的秘密_天天速讯
摘要:一起看一下GaussDB(for MySQL)是如何对执行计划进行缓存并加速Prepared Statement性能的。
(资料图片)
本文分享自华为云社区《执行计划缓存,Prepared Statement性能跃升的秘密》,作者: GaussDB 数据库。
引言
在数据库系统中,SQL(Structured Query Language)语句输入到系统后,一般要经历:词法语法解析(parse)、重写(resolve)、优化(optimize)、执行(execute)的过程。词法语法分析,重写和优化,这三个阶段会生成SQL语句的执行计划 (plan)。当SQL语句存在多种执行计划的时候,优化器会从这许多的执行计划中挑选出一个它认为最优的(通常是占用系统资源最少的,包括CPU以及IO等)作为最终的执行计划供执行器执行。生成执行计划的过程会消耗较多的时间,特别是存在许多可选的执行计划时。
图1:SQL语句执行
Prepared Statement是将SQL语句中的值用占位符替代,可以视为将SQL语句模板化或者说参数化。当执行PREPARE语句时,传统MySQL将对指定的语句进行词法语法解析和重写,如上图①②。该阶段称为预编译阶段。Prepared Statement的优势在于一次编译、多次运行,省去了预编译阶段需要的时间。随后发出EXECUTE命令时,MySQL将对编译阶段生成的结构执行优化,即上图的③,生成对应的执行计划并执行,把输出结果返回到客户端。例如:
PREPARE stmt FROM ‘SELECT * FROM t WHERE t.a = ?’;SET @var = 2;EXECUTE stmt USING @var;
传统MySQL的Prepared Statement只会节省SQL语句的解析及重写过程需要的时间,但是对于一条SQL语句,如文章开头所述,优化SQL语句并生成执行计划需要耗费大量的资源以及时间。如果能将该Prepared Statement语句对应的最终执行计划进行缓存,当执行EXECUTE语句的时候,就可以直接使用已缓存的执行计划,从而就可以跳过SQL语句生成执行计划的整个过程,进而可以提高语句的执行性能。为此,GaussDB(for MySQL) 提供了Prepared Statement执行计划缓存特性。
接下来一起看一下GaussDB(for MySQL)是如何对执行计划进行缓存并加速Prepared Statement性能的。
执行计划缓存工作原理
GaussDB(for MySQL)对Prepared Statement执行计划进行缓存的基本原理和流程如下图所示:
- 响应EXECUTE,执行查询。
- 通过is_plan_cached过程来查看当前Query的执行计划是否已经被缓存。
- 如果已经被缓存,优化器将对当前的Query缓存的执行计划进行初始化,根据执行计划的上下文还原执行计划,然后利用还原的执行计划继续执行。
- 如果没有被缓存,在执行完Query优化生成执行计划之后,通过is_query_cachable过程验证当前执行计划是否可以被缓存。
- 如果满足缓存条件,执行计划将会被缓存(调用cache_JOIN_plan),以便以后的EXECUTE语句可以利用该缓存的计划进行执行。
- 如果不能缓存,通过传统的MySQL执行流程(优化,生成执行计划然后执行)执行EXECUTE语句。
执行计划缓存管理
- 执行计划缓存功能开关
GaussDB(for MySQL)引入了一个新的系统参数rds_plan_cache来开关Prepared Statement执行计划缓存功能。
rds_plan_cache:该参数可以设置为ON/OFF。分别代表开启和关闭执行计划缓存。该参数是Session/Global级别的参数。
- 查看执行计划缓存情况
GaussDB(for MySQL)提供了两个状态变量供用户查看或者验证Prepared Statement执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。
- cached_plan_count:显示有多少个Prepared Statement缓存了执行计划。这是一个Global级别的状态变量。
- cached_plan_hits:显示EXECUTE执行过程中命中了缓存的执行计划的次数。这是一个Session/Global状态。
下面举例来看一下Prepared Statement是如何利用了执行计划缓存特性的:
SET @a = "two";SET @b = 3;PREPARE stmt FROM "SELECT * FROM t1 WHERE b = ? AND c = ?";EXECUTE stmt USING @a,@b;
执行结果如下:
a b c6 two 3
再次执行Prepared Statement:
EXECUTE stmt USING @a,@b;a b c6 two 3
第三次执行Prepared Statement:
execute stmt using @a,@b;a b c6 two 3
通过cached_plan_count和cached_plan_hits查看stmt执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。
SHOW SESSION STATUS LIKE "cached_plan%";
显示结果如下:
Variable_name ValueCached_plan_count 1Cached_plan_hits 2
从显示结果可以看出,第一次执行EXECUTE语句的时候,Prepared Statement对执行计划进行了缓存,即可以看到Cached_plan_count为1; 之后执行两次EXECUTE语句,都命中了执行计划缓存,所以可以看到Cached_plan_hits变成了2。
缓存的执行计划如何失效
为了保持当前缓存的执行计划是尽可能最优的,GaussDB(for MySQL)定义了如下规则来对当前缓存的计划进行失效,并重新生成执行计划:
- 执行计划相关表的记录数更改超过总记录数的20%。这意味着当前表的记录数如果插入/删除超过20%的记录,当前缓存计划将失效并在优化后重新缓存。注:记录数是根据统计数据估计的。所以最好先对表进行Analyze。
- 表定义进行了更改。例如,执行计划相关表上进行的DDL将导致缓存计划无效,并在优化后重新缓存。
- 如果系统变量Optimizer_switch中影响执行计划生成的选项值进行了更改,则缓存的计划将失效,并在优化后重新缓存。
- 系统字符集发生变化,与缓存的计划不同时,将导致缓存计划失效,并在优化后重新缓存。
执行计划缓存功能当前的一些限制
GaussDB(for MySQL)的Prepared Statement的目的是节约查询的优化时间。对于通过并行查询优化的大查询,也就是数据量相对庞大的查询,这些查询大部分的执行时间是集中在执行计划的执行阶段。对于该类型的查询,优化时间相比执行时间而言可以忽略不计,所以GaussDB(for MySQL)没有对并行查询计划进行缓存。另外,GaussDB(for MySQL)对于Prepared statement 缓存执行计划的能力还在逐步增强中,比如当前只支持单表的SELECT查询语句,暂时还不支持UNION操作。
执行计划缓存性能测试结果
对于使用执行计划缓存和不使用执行计划缓存的场景,基于Sysbench测试集进行了性能测试对比,从测试结果可以看出,在启用执行计划缓存后,各类业务性能均有提升。注意:这些测试只代表相对数字,并不代表实际性能。
测试环境配置如下:
数据集 :8 个表,每个表1000万行测试服务器:Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz 2 physical cores 56 processors 460G memory
总结
GaussDB(for MySQL)通过缓存执行计划,可以提升Prepared Statement的性能。特别是针对Range Scan的测试集,性能提升可达2倍左右。未来我们会支持越来越多的查询场景,性能加速值得期待。
点击关注,第一时间了解华为云新鲜技术~
关键词:
-
执行计划缓存,Prepared Statement性能跃升的秘密_天天速讯
摘要:一起看一下GaussDB(forMySQL)是如何对执行计划进行缓存并加速PreparedStatement性能的。本文分享自华
来源: 执行计划缓存,Prepared Statement性能跃升的秘密_天天速讯
专访:美国操纵G7干预别国事务——访巴西圣保罗州立大学教授保利诺 环球观点
环球看热讯:Apple Watch表带为何那么贵?原因揭开
理想“L6” 被长城给抢先造出来了:仅售23万!
天天新动态:小米汽车多项高层职务调整:前麦格纳高管黄振宇接管汽车供应链
全球速看:百度网盘内测大模型版云一朵智能助理:翻译、找图一句话搞定
599元 联想小新24 FHD高刷屏上架:100Hz刷新率 硬件级护眼_世界快资讯
一文读懂责任分配矩阵,解决你80%的项目难题 播报
今年618最值得买的手机:华为Pocket S限时优惠1000元、12期分期免息 天天即时
西游记主题公园游客吵架“牛魔王”劝架 幸运没人受伤:网友吐槽素质不如妖怪
蔷薇适合种在庭院什么地方?庭院种蔷薇如何养护?
四种立即改善在线安全的方法
国际清算银行:必须加强监管以防止更多银行倒闭|当前报道
热文:幼儿园摆20桌请200孩子吃席庆六一:每桌有龙虾、烧鸡、牛肉
还因续航焦虑不敢买电车吗?极氪001千里续航版交付:纯电1032km-世界动态
原价300元:星巴克家享黑咖啡10包25元大促(不到1折)-环球看点
天天即时:捷豹路虎发布全新品牌Logo!路虎车标从此成“遗产”
学生网购小石头收到7斤巨石 画面很荒谬很搞笑:网友笑谈赚了 当前信息
天天微资讯!OPEN AI接入MidJourney 画图支持GPT4中文智能优化效果惊艳
易基因:DNA羟甲基化和TET酶在胎盘发育和妊娠结局中的作用 | 深度综述_全球快资讯
环球焦点!规则引擎easyRules中组合规则的使用
windows10安装Sinpaste失败的解决
每日报道:社交app源码开发平台基础知识,软件二维码的生成
每日精选:香港特区政府发售近60亿美元绿色债券 增设10年期人民币债券
每日讯息!光华股份:公司电子封装材料用聚酯树脂目前处于小批量试产阶段,进展良好,已形成少量销售
理想车主跑高速 竟让婴儿平躺在副驾驶 网友直呼心真大-世界快资讯
国产性能车天花板!领克03高性能版首发:2.0T榨出350马力 今头条
全球实时:卢伟冰:Redmi K60在2000-3000档无敌 销量甩开友商
给孩子买豪车就差2个亿怎么办?用电锯做一辆!
尼康Z8禁用非原装电池 理由是出于安全考虑 用户:吃相难看
合纵科技:6月1日融资买入289.18万元,融资融券余额1.34亿元
世界即时看!windows10环境下安装RabbitMQ以及延时插件(图文)
RCEP对15个签署国全面生效
24 万辆 比亚迪 5 月赢麻了|今日热门
2999元 创维新款Mini LED显示器上架:4K HDR1000、96W反向充_世界热讯
世界快报:ChatGPT现在正式交到了一名华人手上
世界今亮点!不只比5G好用10倍 华为提出5.5G新战略:把光技术带入每一辆车
首发骁龙6 Gen 1!荣耀X50入网:1.5K OLED双曲屏
男子开咖啡店日入0元:之前一直在打工 突然想创业|滚动
Vue-自定义icon实现_每日快报
甘肃省发行新增专项债券416亿元 有力支持662个项目建设
50项精彩活动让孩子们乐享“六一” 世界新消息
要去月球抢水资源 NASA称美国将率先登月:4名宇航员停留300天|环球热闻
天网预演
12V小电瓶可能把车点着 福特召回超14万辆林肯SUV
全球即时看!16TB机械硬盘跌破千元 国内电商秒杀亚马逊 这价格还海淘?
焦点快看:联想GeekPro G5000锐龙本首发:RTX 4060秒杀价6499元
【世界报资讯】洋子聊球_洋子
巨石强森重拾速度与激情
世界快资讯丨重返世界首富 马斯克已坐私人飞机回国 发推大赞上海工厂及员工
年利率4.15%!苹果版“余额宝”上线 用户吐槽账户钱没了:官方回应
谁来拯救岌岌可危的油价?沙特、俄罗斯减产都带不动 欧美乐见局面|天天通讯
女子为拍照被卷入海中不幸身亡 只为打卡网红地:网友唏嘘不值得
威尔森_关于威尔森的介绍|每日播报
前5个月交易所债市融资超2万亿元 优质主体发行份额将进一步提升
显卡买RTX 4060Ti还是买RTX 3070?
林志颖即将复出 网友喊话:安全最重要!
环球头条:苹果计划扩大中国和印度市场:要在温州、佛山、合肥开新店
5G是高铁 6G就是飞机!中国移动:6G天地一体 感受爽到家|每日视点
儒林外史第六回概括300字(儒林外史第六回概括)
通讯!读改变未来的九大算法笔记01_数据压缩
拉普兰德
8GB显卡杀到1500元档 英特尔发布Arc新驱动:性价比无敌
618直降1000元 小米迷你主机2999元:0.4L体积 媲美Mac Mini 世界新动态
为什么大家爱买彩票了?国内彩票销售创新高 都想中大奖节奏
热讯:哥几个走着人物结局详细版介绍_哥几个走着真正结局
千万别让NVIDIA知道!有厂商偷偷做了RTX 3070 16GB 环球新视野
老旗舰不死!华为手机8.8折升级内存来了:342元起 最高512GB 焦点精选
世界热讯:英伟达起飞后忘记游戏玩家?黄仁勋:深深地伤害了我的感情
世界动态:用3倍潜望长焦拍人像!自研马里亚纳谢幕!OPPO可真会整活
天天观速讯丨iOS 17马上发!苹果发布iOS 16关键数据:90%使用率 有你没?
全球看热讯:零钱通1000块钱收益_零钱通1000收益多少
容汇锂业产能和采购数据成谜
三大运营商哪个信号好 三大运营商哪个好_环球新动态
中机联:1-4月机械工业累计实现营收8.7万亿,同比增长9.9%
大行评级|花旗:削申洲目标价13%上半年销售料跌中双位数 环球聚看点
焦点短讯!关爱特殊群体 在汉央企青年志愿者陪孩子们过“六一”
宁德时代大宗交易成交258.78万元 焦点报道
酒泉发布大风蓝色预警_微动态
母亲的朋友电影(年轻母亲3)_环球视点
8起起火事故!捷豹路虎紧急召回超6000辆捷豹I-Pace纯电SUV
天天资讯:理想L7“劲敌”!大五座旗舰电动SUV魏牌新摩卡DHT-PHEV上市:23.18万元
天天微头条丨央视出品!青春电视剧《梦中的那片海》CCTV8开播:肖战、李沁主演
中国吉林一号卫星:拍到亚马逊河的原始部落!
天天资讯:日志脱敏之后,无法根据信息快速定位怎么办?
18)游标
【财经分析】公募REITs业绩逐步修复 长期投资价值依旧突出
世界速讯:甘肃能源:截至2023年5月31日,公司股东人数为52571
极摩客K4迷你主机曝光:搭载R9 7940HS处理器 跑分破150万 天天要闻
17)错误处理-热文
WPF绘制深圳地铁路线图
2023-06-01:讲一讲Redis常见数据结构以及使用场景。
今日快讯:2023 五月联考游记
比亚迪前5月新能源汽车销量超100万辆 同比增长97.63%
5699元起 moto razr 40 Ultra发布:3.6英寸外屏比iPhone 4还大
【天天热闻】比亚迪5月销量破24万!各车型销量出炉:四款车超3万辆
折叠屏超级卷王!moto razr 40发布:只要3999元起
Wi-Fi 7真实网速狂飙2千兆!2倍碾压Wi-Fi 6、首发蓝牙5.4
微速讯:小折叠屏终极形态!moto razr 40 Ultra预售:顶配版卖6399元
银行也会现金流紧张吗?贵阳、重庆银行一年拆入10倍于拆出 每日时讯