大数据表查询优化 - 表分区
时间:2022-07-26
本文章向大家介绍大数据表查询优化 - 表分区,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
快两年没写过业务代码了…… 今天帮一个研发团队优化了一下数据库表的查询性能。使用的是表分区。 简单记录了一下步骤,方便直接用:
1. 使用 Trade_Date 新建表分区,从 4 月建立到 2021-6,每月一个单独的分区:
ALTER TABLE tbl_original_data PARTITION BY RANGE(unix_timestamp(Trade_Date))(
partition p0 values less than (unix_timestamp('2020-05-01 00:00:00')),
partition p1 values less than (unix_timestamp('2020-06-01 00:00:00')),
partition p2 values less than (unix_timestamp('2020-07-01 00:00:00')),
partition p3 values less than (unix_timestamp('2020-08-01 00:00:00')),
partition p4 values less than (unix_timestamp('2020-09-01 00:00:00')),
partition p5 values less than (unix_timestamp('2020-10-01 00:00:00')),
partition p6 values less than (unix_timestamp('2020-11-01 00:00:00')),
partition p7 values less than (unix_timestamp('2020-12-01 00:00:00')),
partition p8 values less than (unix_timestamp('2021-01-01 00:00:00')),
partition p9 values less than (unix_timestamp('2021-02-01 00:00:00')),
partition p10 values less than (unix_timestamp('2021-03-01 00:00:00')),
partition p11 values less than (unix_timestamp('2021-04-01 00:00:00')),
partition p12 values less than (unix_timestamp('2021-05-01 00:00:00')),
partition p13 values less than (unix_timestamp('2021-06-01 00:00:00')),
partition p14 values less than (unix_timestamp('2021-07-01 00:00:00')) );
2. 到明年6月以后,使用以下语句添加新分区:
ALTER TABLE tbl_original_data
ADD PARTITION (PARTITION p15 values less than (unix_timestamp('2021-08-01 00:00:00')))
3. 因为现有查询已经带上 Trade_Date 字段条件,所以不用修改查询和程序。
优化完成后,该查询由每次7秒,降低到每次 0.4 秒左右。
参考文章: MySQL数据库表分区功能详解 MySQL对数据表已有表进行分区表 Mysql 分区表-分区操作
- 5个经典的JavaScript面试题
- 轻松初探 Python 篇(四)—list tuple range 知识汇总
- CSS深入理解学习笔记之overflow
- Python爬虫实践——简单爬取我的博客
- Python爬虫入门(二)
- 在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth起步创建应用程序使用NUGET更新OWIN中间件启动SSL支持申请腾讯QQ的Oauth申请新浪微博的Oauth快速接入资源地址&源码
- 有趣的算法(六) ——Find-Union算法
- 有趣的算法(七) ——快速排序改进算法
- 编写你人生中第一个机器学习代码吧!
- 使用Octave来学习Machine Learning(二)
- RESTful API的十个最佳实践1. 使用名词而不是动词 2. Get方法和查询参数不应该改变资源状态3. 使用名词的复数形式 4. 为关系使用子资源 5. 使用HTTP头决定序列化格式 6. 使
- MYSQL数据库设计的一些小技巧[转载]
- 在ASP.NET 5应用程序中的跨域请求功能详解什么是“同域”添加CORS包在应用程序中配置CORSCORS策略选项跨域请求中的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求
- 有趣的算法(八) ——红黑树插入算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「Mysql优化大师一」mysql服务性能剖析工具
- FPGA设计心得(12)如何正确使用 in_system_ibert ?
- Java面试高频知识点汇总 垃圾回收(GC)机制专题
- Celery-分布式任务队列学习笔记
- Java面试高频知识点汇总 数据库专题
- Java面试高频知识点总结 Redis
- Java面试高频知识点总结 Spring
- 杂谈小程序
- pytest封神之路第四步 内置和自定义marker
- (译)SDL编程入门(3)事件驱动编程
- 一个简单的Angular search UI实现
- (译)SDL编程入门(2)在屏幕上显示图像
- 【Vue进阶】手把手教你在 Vue 中使用 JSX
- (译)SDL编程入门(1)Hello SDL
- Django使用Channels实现websocket