由于最近总有人抱怨,数据迁移后执行SQL变慢,经过查看原来是分区导致的问题。原分区根据按月设置RANGE分区,

看到这图的时候也许有人就会发现问题.......

业务查询SQL:

从SQL上看 执行计划确实是走了分区,但为什么没有命中索引呢,在图1的里有联合索引(idx_reportDate_groupID_shopID_saasOrderKey)

##解决问题思路

1、若强制指定走索引,确实是快的,扫描的行数也扫了

但由于业务修改比较麻烦,被要求要和其他库统一索引,继续不管....找问题先......

解决问题2:

猜测可能是表统计信息和碎片引起的,通过dump 还原操作,结果还是一样没解决问题......

解决问题3:

SQL查询1号到10号跨的时间段比较长,难道是优化器问题.....理论了解不多....继续找问题

先把SQL 简单化查询操作 如select * from ....操作

发现效果还不错,此时修改查询时间范围。按业务查询的SQL看看

发现问题了,按理应该是在P27分区,怎么扫了这么多分区,这就能和第1图定义的分区有关系了,定义分区出了问题,到这算真正找到问题了。

开始解决问题:

目前应该想着怎么对3000W 表重构分区,而且不能删除原来数据都要保留着

方法1:

对于小表执行ALTER 操作:alter table table_name remove partitioning;  ##移除分区,锁表

线上可以使用pt-osc工具来移除分区,不影响业务

pt-online-schema-change -u load_data -h 192.168.21.113 -p root123 -P 3306 --alter=" REMOVE PARTITIONING" D=test,t=tbl_saas_order_food --charset=utf8 --no-version-check  --statistics --critical-load="Threads_running:200" --max-load="Threads_running=25" --print --execute

发现一移除分区查询瞬间变快

图索引刚加,在没这个索引 也可使用令一索引

重构分区:

小表自行alter table tabe_name PARTITION BY range(sid)(PARTITION p1512 VALUES LESS THAN (20160101),

PARTITION p1601 VALUES LESS THAN (20160201),.........,PARTITION p888666 VALUES LESS THAN MAXVALUE)

大表:PT-OSC,如图

重构分区后,执行计划

其他验证,是否指定分区:

mysql普通标转分区表_MySQL分区表到普通表互转相关推荐

  1. 如何创建mysql分区表_mysql分区表创建思路

    mysql分区表有range,list,hash,key,其中每个分区又有特殊的类型.对于RANGE分区,有RANGE COLUMNS分区.对于LIST分区,有LIST COLUMNS分区.对于HAS ...

  2. mysql 获取分区的最大值_MySQL分区表测试

    MYSQL 分区表功能测试. 1.查看Mysql版本是否支持分区 SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | ...

  3. mysql 创建分区表_Mysql分区表及自动创建分区Partition

    Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键 CREATE TABLE `test1` ( `id` char(32) COLLATE utf8mb4_unicode_ci NO ...

  4. mysql8分区表_MySQL 分区表

    MySQL分区就是将一个表分解为多个更小的表.从逻辑上讲,只有一个表或一个索引,但在物理上这个表或者索引可能由多个物理分区组成.每个分区在物理上都是独立的.MySQL数据库分区类型:Range分区:行 ...

  5. mysql5.7 分区表_mysql分区表学习

    一:怎样对已有数据的表进行表分区 可以直接alter table进行修改. 如: USE dba; ALTER TABLE t3 PARTITION BY RANGE(id) ( PARTITION ...

  6. 查看 mysql 占用的内存大小_mysql查看数据库和表的占用空间大小

    查看数据库的大小 use 数据库名 SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TAB ...

  7. mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法

    第一种方法:ALTER TABLE 将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句,转换表的存储引擎会导致失去原引擎相关的所有特性. 例:将mytable的引擎修改为Inn ...

  8. mysql 5.5 替换字符_Mysql 5.7替换表中某些字段的字符串

    很多时候在做资源迁移的时候,路径改变,存在数据库的资源文件的路径也会跟着改变,所以需要替换存放路径的字符串,如何快速的替换表中的字段的这些字符串呢? 1. 可以通过MySQL的replace函数 re ...

  9. mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现

    简介:mysql5.0.94版本,该版本以及较高级的版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的 ...

最新文章

  1. FPGA设计心得(5)Aurora 例子工程分析与仿真实例分析(streaming版)
  2. Spring Boot 项目设置网站图标
  3. prototype.js ajax.request,prototype.js的Ajax对象分享
  4. 白话 Session 与 Cookie:从经营杂货店开始
  5. 2018企业面试总汇(答案请自行搜罗) 新增19年阿里面题(反向拓展技术栈)
  6. 四旋翼双环PID控制
  7. 阿里云ECS修复ubuntu 16.04漏洞过程
  8. 二进制安装mariadb 10.2.16
  9. 职场中显情商低的三种行为
  10. aspupload 上传组件下载
  11. 国外开放知识图谱_什么是开放知识,如何传播?
  12. 传感器相关 MPU9250
  13. uni-app 封装接口 405错误
  14. nexus 仓库类型_Nexus仓库搭建及配置详解
  15. 2007林肯公园上海演唱会观后感(实况像片/MP3) update:2008.1.31
  16. Android PPP协议
  17. PHP使用swagger-php自动生成api文档(详细附上完整例子)
  18. 【第91期】22个2022年软件开发的趋势预测及其解读
  19. 为什么戏说php,戏说PHP——1. 1切的开始
  20. 恒生指数、国企指数以及红筹股指数

热门文章

  1. ASP.NET Core 3.0 gRPC 身份认证和授权
  2. .NET开发者必须学习.NET Core
  3. DevOps案例研究|史上最能“拜客户教”的公司,是如何做到持续交付的?(第1趴)...
  4. 打造 .NET Core 链接转发服务
  5. 在ASP.Net Core 中使用枚举类而不是枚举
  6. AWS vs K8s 是新的 Windows vs Linux
  7. C#并行编程(1):理解并行
  8. .NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言
  9. 本土开源、立足全球 | COSCon'17
  10. CoreCLR源码探索(三) GC内存分配器的内部实现