MySQL架构优化实战系列3:定时计划任务与表分区
一
定时计划任务
1、概论
mysql计划任务可以定时更新数据库表或者做大文件的汇总表。
2、配置
开启计划任务
SHOW VARIABLES LIKE 'event_scheduler' 查看是否开启 off 表示未开启
set global event_scheduler =1 此次重启之后的mysql器件生效
永久生效
可见已经开启
3、语法体
4、周期或者时间点语法
每1秒执行
on schedule every 1 second
10天后执行
on schedule at current_timestamp + interval 10 day
指定日期时间执行
on schedule at timestamp '2016-08-16 00:00:00'
每天凌晨3点执行
on schedule every 1 day
starts '2016-05-18 03:00:00' (设定从第二天凌晨3点开始)
每天定时执行,5天后停止执行
on schedule every 1 day
ends current_timestamp + interval 5 day
5天后开启每天定时清空test表,一个月后停止执行
on schedule every 1 day
starts current_timestamp + interval 5 day
ends current_timestamp + interval 1 month
5、高级用法
执行多条sql
临时关闭事件
alter event smudge_insert disable;
临时开启事件
alter event smudge_insert enable;
删除计划任务
drop event smudge_insert;
二
表分区
单张表超过1000W行已经算作是大数据存储场景。
常规海量数据优化:大表拆小表、sql语句优化,下面我们重点介绍大表拆小表的优化。
1、拆表方式
水平拆表
将表user中的1000w行数据拆成user1表和user2表,每张表500w行数据
但是这样做法就是导致sql语句需要更改为 select user1,user2 ...
拆的越多,sql语句越长,所以不推荐此法拆表
垂直分表
如将user表100个字段拆成表user_base(30字段)、表user_extend(20字段)
sql语句优化成 ... user_base left join user_extend on user_base.id = user_extend.id..
表分区
对行水平进行分表,物理存储上分区存储,每个分表有独立的文件,应用程序上还是一张表。
Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。
Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。
2、基于range分区
基于给定连续的区间的值对行进行分区。
新建表user 基于salary区间进行表分区
以字段salary为准 按照区间 [0,1000] [1000,3000] [3000,..] 将表分三个区
对已有的表创建分区
可能遇到的错误
这里的提示已经很明确了,分区的列必须是个主键列。所以我们给salary添加主键。
查看现在数据库文件
[root@localhost smudge]# cd /usr/local/mysql/var
插入数据测试
可以插入更多的数据,观察分区文件的大小。
使用 watch -n1 ls -lh 每秒监测文件大小的变化:
3、基于list分区
分区语句
以area_id列为准, 按照华南和华北 将表分成两个区
表文件
4、基于hash分区
常用于对主键的快速分区
分区语句
以主键id为准,hash算法将表平均分成4个区
表文件
5、基于key分区
建表分区
和hash分区类似将表分成4个区
添加分区
表文件
6、对于Innodb引擎表的分区
Innodb表默认是共享存储空间
默认my.cnf文件
默认情况下Innodb是使用的共享表空间
当在库smudge中, 新建一张Innodb引擎的shop表
cd usr/local/mysql/var/smudge
只有一个文件 shop.frm
shop表的索引和数据都存在ibdata1文件中,共享存储空间的Innodb不可以分区!
所以我们要将Innodb表设置成独立表空间,索引和数据都存放在ibd文件中。
设置成独立表空间
添加一行 innodb_file_per_table
service mysql restart 重启mysql服务
添加表分区
查看表文件
可见分区成功了。
MySQL架构优化实战系列3:定时计划任务与表分区的更多相关文章
- MySQL架构优化实战系列1:数据类型与索引调优全解析
一.数据类型优化 数据类型 整数 数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 ...
- MySQL架构优化实战系列2:主从复制同步与查询性能调优
- MySQL架构优化实战系列4:SQL优化步骤与常用管理命令
- MySQL架构优化:定时计划任务与表分区
转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...
- MySQL高性能优化实战总结!
1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多 ...
- .NET-记一次架构优化实战与方案-底层服务优化
目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 经过上一篇<.NET-记一次架构优化实战与 ...
- .NET-记一次架构优化实战与方案-梳理篇
目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 程序员输出是他敲写的代码,那么输入就是他思考好的 ...
- 收藏起来,史上最全的 MySQL 高性能优化实战总结!
转自:https://mp.weixin.qq.com/s/sRsJzFO9dPtKhovJNWN3Dg 一.前言 MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
随机推荐
- hdu 6112 今夕何夕(模拟)
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- bzoj1231[Usaco2008 Nov]mixup2 混乱的奶牛(状压dp)
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1032 Solved: 588[ ...
- python-day2 切片,格式化输出,函数
1.切片:取元素 格式;变量名[M:N:K] M 表示开始元素索引值, N 表示结束元素索引值(不包含索引值本身) K 表示步长,隔几个切一次 例子:a='hello python' p ...
- C# 处理oralce 时间
addWorkSql.Append("to_date(' " + DateTime.Now.ToString("yyyy-MM-dd HH:ss:mm") + ...
- CVTE面经
神一般的面试经历.也算面了不少公司,没见过这种面试. 一面:三个同学对应一个面试官,同一个问题依次作答. 1.为什么投递这个岗位? 答:blablabla... 2.最难忘的成功项目? 答:blabl ...
- C - Alice, Bob and Chocolate(贪心)
Problem description Alice and Bob like games. And now they are ready to start a new game. They have ...
- myeclipse2014 破解步骤
1.打开破解文件夹Myeclipse 2014 patch,运行run.bat文件 2.在破解界面中,usercode随便输入, systemid 在右边的SystemId按钮处,点击. 将自动生成一 ...
- 自学Python五 爬虫基础练习之SmartQQ协议
BAT站在中国互联网的顶端,引导着中国互联网的发展走向...既受到了多数程序员的关注,也在被我们所惦记着... 关于SmartQQ的协议来自HexBlog,根据他的博客我自己也一步一步的去分析,去尝试 ...
- 一张图说明DIV盒子距离
虚线的宽高为你实际指定的width和height 虚线外的白色区域为padding 红色区域为border的width 红色外的区域为margin
- avaScript中变量的声明和赋值
变量是指程序中一个已经命名的存储单元,它的主要作用就是为数据操作提供存放信息的容器.变量是相对常量而言的.常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变.变量有两个基本特征,即变量名 ...