最新要闻
- 世界今热点:AirPods Pro 2立大功!苹果占据31%真无线耳机市场
- 天天热议:网友吐槽买瓶饮料都要下载APP 网友:是我我扭头就走
- 全球热点!Chrome更新置顶横幅通知:明确不再支持Win7/8.1平台
- 环球速看:价格屠夫 小米4K双99%色域专业显示器2399元(首发3499)
- 天天快播:日本队更衣室留千纸鹤表感谢!国际足联再感谢日本球迷清理看台引热议 高素质
- 世界快讯:日产回应车机更新显示文案待定:车联网激活才可正常使用
- 手机端光追将至:Basemark推出首个移动设备光追基准测试
- 奇瑞汽车站起来了!连续6月销量超10万 破百万辆大关
- 小太阳取暖忘断电7分钟烧掉整间屋!官方科普冬季电器使用指南
- 世界焦点!买到运损保时捷女子要求退一赔三!判了:退车4S店再赔20万
- 焦点快播:吃肉最毁环境、很不环保?国外动物保护主义者抗议肉食让吃素
- “不良剧情直播”污人眼球 抖音出手:禁止虚假炒作、已处罚9万多账号
- 天天热点!醉驾男遇上碰瓷女:给五万要私了嫌贵 结果双双被拘
- 4比1送走韩国 巴西球员轮流摸罗纳尔多双腿蹭欧气 “小熊”说要继续跳舞直到决赛
- 环球微动态丨告别半斤机!小米13全系机身数据出炉:陶瓷/玻璃/素皮集齐了
- 4比1大胜韩国 巴西队赛后集体为球王贝利祈福 女儿称正从肺部感染康复
手机
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
票房这么火爆,如何请视障人士“看”一场电影?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
- 票房这么火爆,如何请视障人士“看”一场电影?
家电
热门看点:MySQ 8.0 推出直方图,性能大大提升!
作者:LuHengXing 链接:http://www.dbapub.cn/2020/09/01/MySQL8.0直方图/
查询优化器负责将SQL查询转换为尽可能高效的执行计划,但随着数据环境不断变化,查询优化器可能无法找到最佳的执行计划,导致SQL效率低下。造成这种情况的原因是优化器对查询的数据了解的不够充足,例如:每个表有多少行数据,每列中有多少不同的值,每列的数据分布情况。
(相关资料图)
因此MySQL8.0.3推出了直方图(histogram)功能,直方图是列的数据分布的近似值,其向优化器提供更多的统计信息。比如字段NULL的个数,每个不同值的百分比,最大/最小值等。MySQL的直方图分为:等宽直方图和等高直方图,MySQL会自动分配使用哪种类型的直方图,无法干预
- 等宽直方图:每个bucket保存一个值以及这个值的累计频率
- 等高直方图:每个bucket保存不同值的个数,上下限以及累计频率
直方图同时也存在一定的限制条件:
- 不支持几何类型以及json类型的列
- 不支持加密表和临时表
- 无法为单列唯一索引的字段生成直方图
创建和删除直方图
创建语法
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON col_name [, col_name] WITH N BUCKETS;
创建直方图时能够同时为多个列创建直方图,但必须指定bucket数量,范围在1-1024之间,默认100。对于bucket数量应该综合考虑其有多少不同值、数据的倾斜度、精度等,建议从较低的值开始,不符合再依次增加。
删除语法
ANALYZE TABLE tbl_name DROP HISTOGRAM ON col_name [, col_name];
直方图信息
MySQL通过字典表column_statistics来保存直方图的定义,每行记录对应一个字段的直方图,已JSON格式保存。
root@employees 13:49: select json_pretty(histogram) from information_schema.column_statistics where table_name="employees" and column_name="first_name";;{ "buckets": [ [ "base64:type254:QWFtZXI=", "base64:type254:QWRlbA==", 0.010176045588684237, 13 ], "data-type": "string", "null-values": 0.0, "collation-id": 255, "last-updated": "2020-09-09 05:47:32.548874", "sampling-rate": 0.163495700259278, "histogram-type": "equi-height", "number-of-buckets-specified": 100}
MySQL为employees的first_name字段分配了等高直方图,默认为100个bucket。
当生成直方图时,MySQL会将所有数据都加载到内存中,并在内存中执行所有工作。如果在大表上生成直方图,可能会将几百M的数据读取到内存中的风险,因此我们可以通过参数hitogram_generation_max_mem_size
来控制生成直方图最大允许的内存量,当指定内存满足不了所有数据集时就会采用采样的方式。
root@employees 14:12: select histogram->>"$."sampling-rate"" from information_schema.column_statistics where table_name="employees" and column_name="first_name";;+---------------------------------+| histogram->>"$."sampling-rate"" |+---------------------------------+| 0.163495700259278 |+---------------------------------+
从MySQL8.0.19开始,存储引擎自身提供了存储在表中数据的采样实现,存储引擎不支持时,MySQL使用默认采样需要全表扫描,这样对于大表来说成本太高,采样实现避免了全表扫描提高采样性能。
通过INNODB_METRICS计数器可以监视数据页的采样情况,这需要提前开启计数器
root@employees 14:26: SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE "sampled%"\G*************************** 1. row *************************** NAME: sampled_pages_readCOUNT: 430*************************** 2. row *************************** NAME: sampled_pages_skippedCOUNT: 4562 rows in set (0.04 sec)
采样率的计算公式为:sampled_page_read/(sampled_pages_read + sampled_pages_skipped)
优化案例
复制一张表出来,源表不添加直方图,新表添加直方图
root@employees 14:32: create table employees_like like employees;Query OK, 0 rows affected (0.03 sec)root@employees 14:33: insert into employees_like select * from employees;Query OK, 300024 rows affected (3.59 sec)Records: 300024 Duplicates: 0 Warnings: 0root@employees 14:33: ANALYZE TABLE employees_like update HISTOGRAM on birth_date,first_name;+--------------------------+-----------+----------+-------------------------------------------------------+| Table | Op | Msg_type | Msg_text |+--------------------------+-----------+----------+-------------------------------------------------------+| employees.employees_like | histogram | status | Histogram statistics created for column "birth_date". || employees.employees_like | histogram | status | Histogram statistics created for column "first_name". |+--------------------------+-----------+----------+-------------------------------------------------------+
分别在两张表上查看SQL的执行计划
root@employees 14:43: explain format=json select count(*) from employees where (birth_date between "1953-05-01" and "1954-05-01") and first_name like "A%";{ "query_block": { "select_id": 1, "cost_info": { "query_cost": "30214.45" }, "table": { "table_name": "employees", "access_type": "ALL", "rows_examined_per_scan": 299822, "rows_produced_per_join": 3700, "filtered": "1.23", "cost_info": { "read_cost": "29844.37", "eval_cost": "370.08", "prefix_cost": "30214.45", "data_read_per_join": "520K" }, "used_columns": [ "birth_date", "first_name" ], "attached_condition": "((`employees`.`employees`.`birth_date` between "1953-05-01" and "1954-05-01") and (`employees`.`employees`.`first_name` like "A%"))" } }}root@employees 14:45: explain format=json select count(*) from employees where (birth_date between "1953-05-01" and "1954-05-01") and first_name like "A%";{ "query_block": { "select_id": 1, "cost_info": { "query_cost": "18744.56" }, "table": { "table_name": "employees", "access_type": "range", "possible_keys": [ "idx_birth", "idx_first" ], "key": "idx_first", "used_key_parts": [ "first_name" ], "key_length": "58", "rows_examined_per_scan": 41654, "rows_produced_per_join": 6221, "filtered": "14.94", "index_condition": "(`employees`.`employees`.`first_name` like "A%")", "cost_info": { "read_cost": "18122.38", "eval_cost": "622.18", "prefix_cost": "18744.56", "data_read_per_join": "874K" }, "used_columns": [ "birth_date", "first_name" ], "attached_condition": "(`employees`.`employees`.`birth_date` between "1953-05-01" and "1954-05-01")" } }}
可以看出Cost值从30214.45降到了18744.56,扫描行数从299822降到了41654,性能有所提升。
参考资料:
https://dev.mysql.com/doc/refman/8.0/en/analyze-table.html#analyze-table-histogram-statistics-analysis https://mysqlserverteam.com/histogram-statistics-in-mysql/
近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!
-
热门看点:MySQ 8.0 推出直方图,性能大大提升!
作者:LuHengXing链接:http: www dbapub cn 2020 09 01 MySQL8 0直方图 查询优化器负责将SQ...
来源: -
世界视点!浙里办单点登陆、令牌获取用户信息
原文链接:https: blog csdn net qq_41441896 article details 124636772浙里办开发票据认证单...
来源: 热门看点:MySQ 8.0 推出直方图,性能大大提升!
记录--uniapp自定义相机 自定义界面拍照录像闪光灯切换摄像头
世界视点!浙里办单点登陆、令牌获取用户信息
【全球热闻】iOS开发证书发布证书,推送证书,描述文件的生成总集(一)
世界今热点:AirPods Pro 2立大功!苹果占据31%真无线耳机市场
天天热议:网友吐槽买瓶饮料都要下载APP 网友:是我我扭头就走
全球热点!Chrome更新置顶横幅通知:明确不再支持Win7/8.1平台
环球速看:价格屠夫 小米4K双99%色域专业显示器2399元(首发3499)
天天快播:日本队更衣室留千纸鹤表感谢!国际足联再感谢日本球迷清理看台引热议 高素质
世界快讯:日产回应车机更新显示文案待定:车联网激活才可正常使用
手机端光追将至:Basemark推出首个移动设备光追基准测试
奇瑞汽车站起来了!连续6月销量超10万 破百万辆大关
小太阳取暖忘断电7分钟烧掉整间屋!官方科普冬季电器使用指南
世界焦点!买到运损保时捷女子要求退一赔三!判了:退车4S店再赔20万
焦点快播:吃肉最毁环境、很不环保?国外动物保护主义者抗议肉食让吃素
“不良剧情直播”污人眼球 抖音出手:禁止虚假炒作、已处罚9万多账号
天天热点!醉驾男遇上碰瓷女:给五万要私了嫌贵 结果双双被拘
4比1送走韩国 巴西球员轮流摸罗纳尔多双腿蹭欧气 “小熊”说要继续跳舞直到决赛
环球微动态丨告别半斤机!小米13全系机身数据出炉:陶瓷/玻璃/素皮集齐了
4比1大胜韩国 巴西队赛后集体为球王贝利祈福 女儿称正从肺部感染康复
咖喱味越来越浓!消息称苹果调整产业链 国行iPhone/iPad印度产会变多
小米13系列海报曝光!标准版设计如何 跟Pro差别较大
环球速讯:网飞期待《狩魔猎人》新季新气象
每日焦点!开眼了!丰田为电动车推出“手动挡”结构 雷克萨斯实车跑山演示
【天天新视野】全球首发第二代骁龙8!vivo X90 Pro+开售:12+512GB顶配6999元
”摆烂模式“成牛津词典2022年度词 今天你摆烂了吗?
环球讯息:韩国球迷用7比1嘲讽巴西最后惨败 亚洲一哥孙兴慜称尽力:网友直言自取其辱
天天视点!7399买吗?AMD RX 7900XTX性能首曝光:对比4080/90结果意外
【全球时快讯】比亚迪纯电神车海豚哥伦比亚发布:405km续航、搭刀片电池
全球热文:11月新能源汽车销量再创新高:比亚迪一骑绝尘 甩远特斯拉
世界热头条丨市场仍低迷!预计2022年全球智能手机出货量下降9.1%
【独家】柯洁直播透露斥巨资进军餐饮:光装修花了1800万 品质、价位无敌
世界今热点:日本点球战2-4负克罗地亚、巴西4-1大胜韩国:亚洲球队世界杯全部出局
“侃爷”怀疑马斯克是半个中国人!本人神回应
你每天都在用的餐具 用错等于慢性“投毒”!小心这7类材料
中国人搞锂到底有多狠?美国都开始耍花招了!
天天日报丨当年那些卖伟哥的垃圾邮件:一天就能赚7000美元!
观焦点:100年前的导演拍出“摘头”特效:就问你服不服
快报:网传上海工厂将主动减产20% 特斯拉回应:不实消息
今热点:长沙一SUV高速上失控狂飙500公里引热议 刹车为何同时失灵?专家释疑
小米上一代旗舰12S Pro降至4699元!传小米13也差不多卖这价
世界微动态丨电费飙升 日本最强超算用不上起了:临时关闭30%节点
2022十佳游戏公布:第一名《战神5》
全球要闻:女子头胎生龙凤胎 2胎又生双胞胎:众网友顶礼膜拜
国服花落谁家?暴雪心血大作《暗黑破坏神4》:要正式来了
NVIDIA坐不住了:要用1年时间干掉游戏显卡市场一切乱象
天天微资讯!仅上线不到一年!字节跳动旗下阅读App识区宣布停运
连续泄露小米13真机!百万粉汽车大V公开道歉 愿意接受处罚
【世界报资讯】恒驰汽车累计被执行超1亿元 研究院曾同一天5次成老赖
【天天新视野】日本神嘴鹦鹉冲上微博热搜榜:预测日本晋级
上海一轿车冲下数十米高架:车顶塌陷、摔成铁饼
手机飞行模式将成过去时 欧盟明年允许飞机上开5G
荣耀Magic Vs推出个性化服务:手机铰链处可自定义镌刻
每日速看!小直屏+直边方向对了!小米13预约数领先Pro版:核心配置完全同步
世界信息:加码VR头显!苹果大力招募神经渲染研究人员
米粉建议小米13发布会直接说价格 魏思琪:料还有很多
妈妈带女儿在自家保时捷上作画:网友质疑
讯息:今晚油价“二连降”!92号汽油重回“7元时代”:加满少花17.5元
元旦假期还有三周时间 机票平均价格上涨30%:贵过黄金周
小米在德国推出米家烹饪机器人!看到价格我就放心了
RTX 4080被曝要降价了!可不是惧怕AMD RX 7900
天天资讯:米粉谈小米12S Ultra给他的最大印象:拍照不可思议
爱美不容易!穿错高跟鞋可能会带来身体伤害:弓形腿、骨盆前倾
全球微资讯!氢能源真是未来?丰田海拉克斯氢燃料电池版发布:坐在气罐上开
微星笔记本双12活动来袭:学生再享立减100+三期免息
天天热议:报告:特斯拉美国车主更易遭路怒症找茬 有车主一月被别八次
环球视讯!联想搭建 美国全新高性能计算机成全球史上能效最高产品
车主打开特斯拉“宠物模式” 将牧羊犬留在车内!回来一看崩溃
全球快看点丨内马尔iPhone 14 Pro大力神杯壁纸引热议:明晨或伤愈回归出战韩国队
世界今亮点!仅11kg通勤神器 九号电动滑板车跌破千元:直降600元
天天快看点丨日系车慌不慌?比亚迪进军日本:首车确认为元Plus 23万
每日速递:近10年显卡涨价多恐怖?GTX780到RTX4090/80 售价快翻一倍 NV血赚
焦点观察:合资中型轿车新敌 国产豪华红旗H6实车亮相:罕见双中置排气
焦点关注:10.3英寸大屏加持!联想YOGA Paper墨水平板开启预售:到手2699元
潮州特斯拉“失控”撞人事故进展:车主仍未拿到数据 鉴定机构不一般
世界快资讯:支持更多游戏!新版免费PS4模拟器成了:配置要求亲民
世界速读:Win10快升级!微软又为Win11铺路:用户不愿升级四大原因被指扎心
HTC:明年上半年将发布新一代的VR产品
环球微资讯!23岁姆巴佩一战刷新多项纪录 弯道超车传球:英格兰与法国会师8强
环球播报:办婚礼后发现女友“已婚” 微信发的520红包能要回来吗?法院判了
天天热讯:神舟十四号航天员乘组平安抵京 将进行全面医学检查
焦点热议:《原神》获PS年度大奖 米哈游800原石免费送:有等级限制
环球看热讯:摊上事!马斯克:如果我突然死亡 肯定不是自杀
突破100多年局限!中国科大实现非接触心电图实时监测:不用脱衣佩戴电极
今日视点:大众ID系列被曝大面积车机故障 车主维权 回应来了:已有技术解决方案
当前最新:被环保逼疯的船东们 造的船一个比一个赛博朋克
拼多多变成天猫?我感觉 这业绩多少有点变态了
每日快播:为什么只有饿死的狮子 没有饿死的老虎?晚年有啥不一样?
全球微速讯:00后女大学生做宿舍美甲月入过万:没毕业就开店、买车了
今日快看!神舟十四号返回舱呈水平状态着陆:3名航天员报告感觉良好
播报:神十四回家了!刘洋出舱挥手笑得好甜、陈东第一个在轨超200天航天员
SMS短信技术问世30周年:谷歌再次嘲讽苹果“活在90年代”
【环球新要闻】神舟十四号返回舱成功着陆!太空出差半年回家了
环球看点!玩家买到诡异的GTX Titan X卡皇:五个接口 少了仨
世界热议:三位币圈大佬先后意外去世!29岁溺亡、30岁睡死、53岁坠机
世界播报:抗衰药物有进展:丹麦科学家称人类寿命可被延长至200年
全球速递!库克约马斯克私下见面后:靠个人魅力把他征服了
【播资讯】史上最贵数字旗舰?曝小米13系列将发布:起售价4299元
加宽无勒感:大嘴猴四角裤29元3条
榴莲、山竹便宜了!水果专列开通:543吨一次拉回国