mysql普通标转分区表_MySQL分区表到普通表互转
由于最近总有人抱怨,数据迁移后执行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分区表到普通表互转相关推荐
- 如何创建mysql分区表_mysql分区表创建思路
mysql分区表有range,list,hash,key,其中每个分区又有特殊的类型.对于RANGE分区,有RANGE COLUMNS分区.对于LIST分区,有LIST COLUMNS分区.对于HAS ...
- mysql 获取分区的最大值_MySQL分区表测试
MYSQL 分区表功能测试. 1.查看Mysql版本是否支持分区 SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | ...
- mysql 创建分区表_Mysql分区表及自动创建分区Partition
Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键 CREATE TABLE `test1` ( `id` char(32) COLLATE utf8mb4_unicode_ci NO ...
- mysql8分区表_MySQL 分区表
MySQL分区就是将一个表分解为多个更小的表.从逻辑上讲,只有一个表或一个索引,但在物理上这个表或者索引可能由多个物理分区组成.每个分区在物理上都是独立的.MySQL数据库分区类型:Range分区:行 ...
- mysql5.7 分区表_mysql分区表学习
一:怎样对已有数据的表进行表分区 可以直接alter table进行修改. 如: USE dba; ALTER TABLE t3 PARTITION BY RANGE(id) ( PARTITION ...
- 查看 mysql 占用的内存大小_mysql查看数据库和表的占用空间大小
查看数据库的大小 use 数据库名 SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TAB ...
- mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
第一种方法:ALTER TABLE 将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句,转换表的存储引擎会导致失去原引擎相关的所有特性. 例:将mytable的引擎修改为Inn ...
- mysql 5.5 替换字符_Mysql 5.7替换表中某些字段的字符串
很多时候在做资源迁移的时候,路径改变,存在数据库的资源文件的路径也会跟着改变,所以需要替换存放路径的字符串,如何快速的替换表中的字段的这些字符串呢? 1. 可以通过MySQL的replace函数 re ...
- mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
简介:mysql5.0.94版本,该版本以及较高级的版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的 ...
最新文章
- FPGA设计心得(5)Aurora 例子工程分析与仿真实例分析(streaming版)
- Spring Boot 项目设置网站图标
- prototype.js ajax.request,prototype.js的Ajax对象分享
- 白话 Session 与 Cookie:从经营杂货店开始
- 2018企业面试总汇(答案请自行搜罗) 新增19年阿里面题(反向拓展技术栈)
- 四旋翼双环PID控制
- 阿里云ECS修复ubuntu 16.04漏洞过程
- 二进制安装mariadb 10.2.16
- 职场中显情商低的三种行为
- aspupload 上传组件下载
- 国外开放知识图谱_什么是开放知识,如何传播?
- 传感器相关 MPU9250
- uni-app 封装接口 405错误
- nexus 仓库类型_Nexus仓库搭建及配置详解
- 2007林肯公园上海演唱会观后感(实况像片/MP3) update:2008.1.31
- Android PPP协议
- PHP使用swagger-php自动生成api文档(详细附上完整例子)
- 【第91期】22个2022年软件开发的趋势预测及其解读
- 为什么戏说php,戏说PHP——1. 1切的开始
- 恒生指数、国企指数以及红筹股指数
热门文章
- ASP.NET Core 3.0 gRPC 身份认证和授权
- .NET开发者必须学习.NET Core
- DevOps案例研究|史上最能“拜客户教”的公司,是如何做到持续交付的?(第1趴)...
- 打造 .NET Core 链接转发服务
- 在ASP.Net Core 中使用枚举类而不是枚举
- AWS vs K8s 是新的 Windows vs Linux
- C#并行编程(1):理解并行
- .NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言
- 本土开源、立足全球 | COSCon'17
- CoreCLR源码探索(三) GC内存分配器的内部实现