当前位置: 首页 > news >正文

链接索引 mysql_mysql索引

这几天测试确认系统的订单大库查询,发现查询很慢,但是都增加了相应的索引,但是依然很慢,查询经常请求超时,涉及的数据库是order-store的order-index表(目前是直接通过和数据库交互的方式去查询的,没有用到搜索引擎)。

经过排查,发现是数据迁移,迁移进来了300多万的数据,拖慢了查询的速度。(图里边的数据被清除了一些,仅作示意)。

1、explain 一下,看下大致的订单总数,而且看到这个查询用到的是type=all,key=null,是全表扫描。

create_date已经加上了索引,为什么查询没有走索引,而是全表扫描呢?

6e1749adf5b97330479ec9db2b086be2.png

测试的过程中发现了这样的一个现象,查询5月后的订单,用到了idx_create_date索引,

e68bbf5a2cffb4edc65bf02df40e8a20.png

但是查询4月后的订单,就是全表扫描,不会使用idx_create_date索引,严重影响了效率,甚至会拖垮数据库(beta环境机器配置低;是虚拟机,网络可能有问题),导致系统不可用。

d6c4b76b3e126f4d2e1af7198b32bedb.png

经过分析,发现这几天有同事在做数据迁移,很多数据直接被灌入beta环境的数据库,可能是迁移的数据没有能被索引,所以查询的时候,是全表扫描了。

我们又查询了order_index的索引,发现索引数量偏多(对mysql这种千万级的数据库,一般一个表上边的索引都不超过5个)

针对Cardinality(数据散列度,值越大,表明数据越分散,重复的情况少;数越小,代表重复值的值多)

也研究了搜索的条件,例如arrive_time最多只有24个值,因此没必要加索引;即使加了索引,也是走全表扫描,反而会在增加索引的维护成本,降低写入或者更新数据的性能,索引太多,也会占用很大的空间。

因此一些不必要的索引可以去掉。

03603f4947e137134ee637529f56d52e.png

在这边上线完之后,会进行优化,加入搜索引擎(常用的有sphinx,lucene,solar),这个需要慢慢了解。

相关文章:

  • linux c epoll mysql_epoll简介和使用
  • python可以不对变量初始化_Python的诡异陷阱
  • python怎么绘制图例_用Python绘制图例
  • centos7安装mysql5.7.23_centos7.1上安装Mysql5.7.23
  • java客户端_大家都是怎么发布Java客户端程序的?难道让用户自己装JRE?
  • java 加载jar_java – 在运行时加载jar
  • java ant linux_linux下ant的安装
  • java获取数据库信息_java获取数据库的库、表、字段信息
  • java jpanel 布局管理器,JPanel和Java布局管理器
  • java 验证码识别 类库_iCaptcha
  • java调用wsdl证书错误_java调用.net web service服务,报证书错误
  • mysql 联表删除limit_MySQL联结多表更新和删除_mysql
  • mysql数据库备份总结_mysql中mysqlhotcopy备份数据库总结
  • java 反射 api_七分钟理解 Java 的反射 API
  • java 导入dbf文件_用java怎么实现批量导入dbf文件(从dbf文件导入到sqlserver2008中)到sqlserver2008...
  • 2017-08-04 前端日报
  • Angular 响应式表单之下拉框
  • JavaScript服务器推送技术之 WebSocket
  • Next.js之基础概念(二)
  • Node + FFmpeg 实现Canvas动画导出视频
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue组件定义
  • 从setTimeout-setInterval看JS线程
  • 从零开始学习部署
  • 工程优化暨babel升级小记
  • 构造函数(constructor)与原型链(prototype)关系
  • 基于组件的设计工作流与界面抽象
  • 异常机制详解
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (day6) 319. 灯泡开关
  • (Forward) Music Player: From UI Proposal to Code
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)c52学习之旅-动态数码管
  • (四)Linux Shell编程——输入输出重定向
  • (译)计算距离、方位和更多经纬度之间的点
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)linux下的时间函数使用
  • (转)关于多人操作数据的处理策略
  • (转)原始图像数据和PDF中的图像数据
  • *p++,*(p++),*++p,(*p)++区别?
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .Net Redis的秒杀Dome和异步执行
  • .NET 回调、接口回调、 委托
  • .NET 使用 XPath 来读写 XML 文件
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)