电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

記一次MySQL的優化案例

瀏覽:105日期:2023-10-10 10:08:40

一 背景

有贊的每個OLTP數據庫實例上會設置一個sql-killer進程用于kill 掉執行時間超過一定閾值的sql。下午開發接收到sql被kill的報錯,一起幫助開發排查,本文介紹該案例。

二 場景分析

表結構:

CREATE TABLE `xxx_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT ’id’, `user_id` bigint(20) unsigned NOT NULL DEFAULT ’0’ , `group_id` bigint(20) unsigned NOT NULL DEFAULT ’0’, `nick_name` varchar(30) NOT NULL DEFAULT ’’ COMMENT ’昵稱’, `is_del` tinyint(5) NOT NULL DEFAULT ’0’ COMMENT ’0:數據有效、1:數據邏輯刪除’, `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ’創建時間’, `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ’修改時間’, PRIMARY KEY (`id`), KEY `idx_userid_groupid` (`user_id`,`group_id`)) ENGINE=InnoDB AUTO_INCREMENT=1382032 DEFAULT CHARSET=utf8mb4 ;

問題sql如下

SELECT id, name,status FROM xxx_info WHERE user_id IN (670039223,’373149878’) AND group_id = 1 AND is_del = 0;

第一眼看到sql ,先檢查了表結構 和索引 user_id 是數值類型的,且索引ok 然后手工執行計劃竟然沒有走idx_userid_groupid索引,

記一次MySQL的優化案例

懷疑 user_id in 兩種不同類型的字段導致'隱式轉換',將 其中參數值都換為數值類型或者字符串 或者使用 user_id=數值類型 or user_id=字符串,再次執行

記一次MySQL的優化案例

記一次MySQL的優化案例

執行計劃都是正確。對此我們要解決兩個問題

那么為啥當user_id in (X,Y,Z) 是不同類型時,就不走索引了呢?

我們使用optimizer_trace 來跟蹤執行計劃。

set session optimizer_trace=’enabled=on’;SELECT id, nick_name,is_del FROM xxx_info WHERE user_id IN (670039223,’373149878’) AND group_id = 1 AND is_del = 0;select * from information_schema.optimizer_trace;SELECT id, nick_name,is_del FROM xxx_info WHERE user_id IN (670039223,’373149878’) AND group_id = 1 AND is_del = 0;select * from information_schema.optimizer_trace;set session optimizer_trace=’enabled=off’;

獲取兩個sql的執行計劃并對比,結果顯示

記一次MySQL的優化案例

看到結果我表示

記一次MySQL的優化案例

翻閱 https://bugs.mysql.com 還沒找到相關結果。

代碼里面如何產生不同類型的值?

以下是開發(阿杜)自己的測試

記一次MySQL的優化案例

目前的解決方式是和開發同學溝通讓他們在程序做參數類型一致性校驗,都轉換為 int/long 類型。

特別提醒常見發生隱式轉換導致索引失效的場景

1 where 判斷符號左邊是字符串 ,右邊是數值 比如

where name = 123

2 多表join關聯條件的字段類型不一致,類似于 1

3 多表join關聯條件字符集類型不一樣。比如

a 表 order_no 是utf8mb4 ,b 表order_no 是 utf8

感興趣的 朋友可以多測試,有其他案例的 歡迎討論。

以上就是記一次MySQL的優化案例的詳細內容,更多關于MySQL優化案例的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 蔡司三坐标-影像测量机-3D扫描仪-蔡司显微镜-扫描电镜-工业CT-ZEISS授权代理商三本工业测量 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 电子书导航网_电子书之家_电子书大全_最新电子书分享发布平台 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 |