原创 2016-07-08 汤抗 DBAplus社群

定时计划任务

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:定时计划任务与表分区的更多相关文章

  1. MySQL架构优化实战系列1:数据类型与索引调优全解析

    一.数据类型优化 数据类型 整数   数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 ...

  2. MySQL架构优化实战系列2:主从复制同步与查询性能调优

  3. MySQL架构优化实战系列4:SQL优化步骤与常用管理命令

  4. MySQL架构优化:定时计划任务与表分区

    转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...

  5. MySQL高性能优化实战总结!

    1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多 ...

  6. .NET-记一次架构优化实战与方案-底层服务优化

    目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 经过上一篇<.NET-记一次架构优化实战与 ...

  7. .NET-记一次架构优化实战与方案-梳理篇

    目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 程序员输出是他敲写的代码,那么输入就是他思考好的 ...

  8. 收藏起来,史上最全的 MySQL 高性能优化实战总结!

    转自:https://mp.weixin.qq.com/s/sRsJzFO9dPtKhovJNWN3Dg 一.前言 MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为 ...

  9. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

随机推荐

  1. DataGuard总体结构

    一.DataGuard总体结构 总体目标 1.   描述计划和非计划停机的不同因数 2.   DataGuard的主要组件 3.   物理以及逻辑DataGuard的异同 4.   建立DataGua ...

  2. B3038 上帝造题的七分钟2 线段树

    这就是一道变得比较奇怪的线段树,维护每个区间的最大值和区间和,然后关键在于每次取根号的话数值下降的特别快,不用几次就都是1了,所以每次暴力单点修改,然后直接找区间最大值,假如区间最大值是1的话,就直接 ...

  3. (Go)04.go工作区目录规范及简单例子

    一.规范目录结构 D:\project\src\go_dev\day1\example1 二.设置GOPAH环境变量 三.hello world 1.hello world package main ...

  4. 网易UI自动化测试工具Airtest中导入air文件中的方法

    最近看了一下网易的Airtest ,UI测试工具,写了一些后在导入其他air文件中的.py文件,卡了一下,现在博客中纪录一下导入其他air文件的方式: 在Airtest 测试工具中,导入其他air文件 ...

  5. this引用逃逸问题

    //this引用逃逸 // 1.构造器还未完成前,将自身this引用向外抛,使其他线程访问这个引用,进而访问到其未初始化的变量,造成问题 // 2.内部类访问外部类未初始化的成员变量 //3.多态继承 ...

  6. docker(一):docker是什么?

    认识容器:docker入门篇 docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚 ...

  7. ACM_小明滚出去?(求逆序数)

    小明滚出去? Time Limit: 2000/1000ms (Java/Others) Problem Description: 老师:“小明,写一个排序算法”: 小明: void mysort(i ...

  8. Python 之 %s字符串、%d整型、%f浮点型

    %s string="hello" #%s打印时结果是hello print "string=%s" % string # output: string=hel ...

  9. openMSP430之io_test

    openMSP430: IO functionality test with interupt #include "omsp_system.h" volatile char shi ...

  10. ROS:ubuntuKylin17.04-Ros使用OrbSLAM2

    忙于图像处理和DCNN,很长时间不使用ROS,重新安装系统后,再次使用ORB-SLAM2(ROS)进行三维重建和实时追踪的演示. 参考以前的文章:ROS:ubuntu-Ros使用OrbSLAM ORB ...