原创 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. hdu 2988(最小生成树 kruskal算法)

    Dark roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. 【HNOI 2004】 L语言

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1212 [算法] 字典树 + dp [代码] #include<bits/std ...

  3. 第2课 Git配置文件的妙用

    2-1 "git config"  指令的用法 文件夹中".git"子文件夹内的config文件的优先权>登录账号的home directory中的.gi ...

  4. codevs2800送外卖(floyd+状压dp)

    2800 送外卖  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond     题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东 ...

  5. BZOJ 1914 计算几何

    思路: 我们可以算不合法的 如果三个点都在同一侧 就不合法.. 用总方案数减掉就可以了 (有神奇的实现方法...) //By SiriusRen #include <cmath> #inc ...

  6. VC常用代码之创建进程

    作者:朱金灿 来源:http://blog.csdn.net/clever101 创建进程是编程开发的常用操作.Windows中的创建进程采用API函数CreateProcess实现.下面是一个使用例 ...

  7. 复习java基础第四天(集合:List、Map、Collections、Enumeration)

    一.List: List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置 ...

  8. VHDL之concurrent之block

    1 Simple BLOCK The simple block represents only a way of partitioning the code. It allows concurrent ...

  9. JAVA软件工程师应该具备的技能有哪些?

    前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历, ...

  10. HTML基础知识总结(一)

    概述       HTML是将内容和内容显示形式结合在一起的语言,它对于内容显示形式的控制,主要是通过标签(元素)的属性,由于它对“内容显示形式”存在着很多的弊端,所以之后就出现了CSS,CSS就相当 ...