mysql range代表什么意思_MySQL数据表range分区例子

某些行业数据量的增长速度极快,随着数据库中数据量的急速膨胀,数据库的插入和查询效率越来越低。此时,除了程序代码和查询语句外,还得在数据库的结构上做点更改;在一个主读辅写的数据库中,当数据表数据超过1000w行后,那查询效率真的很让人抓狂。就算早前建了索引,也很难满足用户对于系统查询效率的体验。

优化方案是分表或分区。至于分区的原理以及分区和分表的区别,搜索一下,都介绍的很详细,这里就不作冗余介绍。简单来讲,分表旨在提高数据库的并发能力,分区旨在优化磁盘的IO和数据的读写,所以采用什么方案,还得根据业务再作斟酌。由于我们的系统对并发要求不高,所以便采用了分区。

分区是MySQL5.1以后实现的。其中分区类型有RANGE分区、LIST分区、HASH分区、KEY分区。我们这里是使用RANGE分区来讲解。

分区需要注意的一点是:要么不定义主键,要么把分区字段添加到主键中。并且分区字段不能为NULL,要不然就难以确定分区范围。所以要设为NOT NULL。

首先执行一下show plugins; 查看partition这一栏是否为ACTIVE,是则表示数据库支持分区。

1、创建一个数据表并分区:

CREATE TABLE ` table_name` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`uid` VARCHAR(50) DEFAULT NULL,

`action` VARCHAR(10) DEFAULT NULL,

` channel` VARCHAR(20) DEFAULT NULL,

`count_left` INT(11) DEFAULT NULL,

`end_time` INT(11) DEFAULT '0',

PRIMARY KEY (`id`,`end_time`),

KEY `time` (`end_time`)

) ENGINE=MYISAM DEFAULT CHARSET=utf8

PARTITION BY RANGE(`end_time`) (

PARTITION p161130 VALUES LESS THAN (1480550399),

PARTITION p161231 VALUES LESS THAN (1483228799),

PARTITION p170131 VALUES LESS THAN (1485907199),

PARTITION p170228 VALUES LESS THAN (1488326399),

PARTITION p170331 VALUES LESS THAN (1491004799),

PARTITION p170430 VALUES LESS THAN (1493596799),

PARTITION p170531 VALUES LESS THAN (1496275199),

PARTITION p170631 VALUES LESS THAN (1498867199),

PARTITION pnow VALUES LESS THAN MAXVALUE

);

2、修改一个数据表分区:

ALTER TABLE `table_name`

PARTITION BY RANGE(`end_time`) (

PARTITION p161130 VALUES LESS THAN (1480550399),

PARTITION p161231 VALUES LESS THAN (1483228799),

PARTITION p170131 VALUES LESS THAN (1485907199),

PARTITION p170228 VALUES LESS THAN (1488326399),

PARTITION p170331 VALUES LESS THAN (1491004799),

PARTITION p170430 VALUES LESS THAN (1493596799),

PARTITION p170531 VALUES LESS THAN (1496275199),

PARTITION p170631 VALUES LESS THAN (1498867199),

PARTITION pnow VALUES LESS THAN MAXVALUE

);

说明:1、2中使用end_time (时间是以时间戳的形式记录的) 作为分区字段对表进行分区。分区的区分值为分区名中的时间的时间戳形式,比如2016/11/30 23:59:59 转为秒数为1480550399。以上的代码中,我将数据表分为9个区,从16年11月30日到17年06月31日 共8个区加上pnow这个区存放17年6月31日以后的数据;如上所示,16年11月30日以前的数据,将会存放在p161130这个分区中16年12月01日至16年12月31日的数据将会存放在p161231分区中,以此类推…

分区后可以执行以下语句查看效果(后面也可以用该语句查看每个分区中有多少数据):

SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'table_name';

3、删除一个分区:

执行语句:ALTER TABLE table_name DROP PARTITION p_name;

注意:删除一个分区时,该分区内的所有数据也都会被删除;

如果用这样来删除数据,要比用delete from table_name where …要有效得多;

4、新增一个分区:

执行语句:ALTER TABLE table_name ADD PARTITION (PARTITION p_name VALUES LESS THAN (xxxxxxxxx));

注意:如果原先最后一个分区是PARTITION pnow VALUES LESS THAN MAXVALUE; 那么应该先删除该分区,然后在执行新增分区语句,然后再新增回该分区;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 日期类型比价_MySQL 日期时间类型怎么选?

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类…

怎么才能点一下excel中的超链接就显示出图片?_Excel如何批量建立超链接,搭建工作台...

本篇是“建立工作导航”第3讲如果您错过了前两篇:点墨楼:高效秘技!用EXCEL制作导航页和日志表管理日常工作​zhuanlan.zhihu.com点墨楼:批量提取文件名,快速建立EXCEL工作台文件路径​zhuanlan.zhihu.com为了提高工作效…

全局修改elementui message 右边弹出_ElementUI 只允许 $message 提示一次

场景:在某个API接口中调用了ElementUI的Message方法,在加了loading的情况下,多次请求会重复调用Message方法。Message时间长会重叠,时间段看不清提示内容,很烦~~~~这波是…

mysql 存树 闭包表_关系型数据库树形关系存储-闭包表

前言在关系型数据库中,有一种逻辑关系比较难处理,这种就是树形结构。目前有很多主流的处理方案,比如说直接在业务表中存储上一级id,这样就可以用递归查询SQL的形式找到某一节点的父节点,子节点,或者兄弟节点…

很大的.xls 文件导入sqlserver2005导入不全_python3 接口测试数据驱动之操作 excel 文件...

python3 接口测试数据驱动之操作 excel 文件1.4 操作 excel 文件Python 中一般使用 xlrd 库来读取 Excel 文件, xlrd 库是 Python 的第三方库。1.4.1 xlrd 库安装Xlrd 库跟其他第三方库一样,都是通过 pip install xlrd 命令来安装。安装成功之后,在 C:Py…

label y 训练集测试集x_训练集、测试集 train_test_split

训练集 & 测试集如果拿所有原始数据来训练,存在的问题:模型很差无法调整;真实环境难以拿到真实 label;所以将数据区分为 训练数据 和 测试数据(train test split);将训练数据来训练模型;然后用测试数据…

php mysql练手_ThinkPHP5练手Demo实战

最近有个朋友有个小需求,刚好有时间,也刚好准备研究一下tp5,听说tp5规范了,而且更傻瓜化了。便做了这个论坛的小Demo,开源出来玩玩,改天做两个模版。说句实话,TP5模型层,数据库层真的…

php web mysql数据库_使用php从web访问mysql

php提供多种操作数据库的方案:mysql扩展、mysqli扩展、PDO等。mysql扩展是伴随着php的产生而产生的,随着mysql数据库的发展mysql扩展不能够支持mysql数据库的一些新的特性如预加载功能,mysqli扩展应运而生,重新梳理了php对mysql数…

ubuntu 12.04 mysql_ubuntu12.04 安装和卸载mysql

1:登录系统,安装之前最好先,apt-get update否则会出现找不到安装文件得错误提示2:安装MySQL服务器以及客户端apt-get install mysql-server mysql-client安装得过程中会提示你输入root得密码。3:安装完成以后默认mysql…

oracle实验六杨艳华_oracle实验报告总结

Oracle 实验报告 姓名 学院: 年级: 班级: 指导老师: 实验一 了解 ...学期 Oracle 数据库应用技术 实验报告 选课序号: 班级: 学号: 姓名: 指导教师: 成绩: 史金余 2017 年月日 目录 1.实验目的 ... 学期Oracle 数据库应用......学期 Oracle 数据库应用技术实验报告 选课序号: 班…

python打印生成word_使用python调用zabbix接口截取监控图并生成Word文档

#/usr/bin/python#codingutf-8import json,urllib2,time,os,re,shutilfrom docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qnfrom selenium import webdriverperiod604800#需要获取的监控周期,单位是秒za…

wordpress mysql 密码重置_WordPress忘记密码找回登录密码的四种行之有效的方法

WordPress忘记密码找回登录密码的四种行之有效的方法PS:20170214更新,感谢SuperDoge同学提供的方法,登入phpMyAdmin后,先从左边选自己的数据库,然后点上面的 SQL 标签页,执行下面命令:UPDATE wp…

拷贝 var lib mysql 备份_mysql复制与备份

备份策略:完全差异binlog完全增量binlogbinlog最好能实时备份到另一个节点上。完全备份,多久一次?数据变化量:有20%,建议使用完全备份。可用的备份存储空间:数据变化量很大,可以每天做一个完全备…

nodejs+vue+微信小程序+python+PHP的4s店客户管理系统-计算机毕业设计推荐

系统的功能结构是系统实现的框架,本系统的主要结构为管理员和用户、员工。管理员的功能为车辆信息管理、用户管理、售后服务管理、售后安排管理、完成售后管理等。 本系统实现了售后的在线申请与处理,方便了用户和管理员、员工三方的利益,提高…

mysql 语句 集锦_mysql 语句集锦

查看数据库各表容量大小:select TABLE_NAME, concat(truncate(data_length/1024/1024,2), MB) as data_size,concat(truncate(index_length/1024/1024,2), MB) as index_sizefrom information_schema.tables where TABLE_SCHEMA cjssgroup by TABLE_NAMEorder by d…

esd防护_电路级ESD防护方法

电路板级的ESD防护方法有很多种类,常见的有以下几个方法1、并联放电器件常用的放电器件有ESD/TVS,固体放电管,稳压二极管,压敏电阻,气体放电管等瞬变电压消除器 TVS(Transient Voltage Suppressor): TVS 是…

mysql中如何判断数组和链表_数据结构之链表与数组(-)——数组和链表的简介...

众所周知,在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。例如,对于数…

python从字符串中提取数字并转换为相应数据类型_python从PDF中提取数据的示例

01前言数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据。然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了解如何从pdf文件中提取数据&#xff0c…

python延时队列_如何通过Python实现RabbitMQ延迟队列

最近在做一任务时,遇到需要延迟处理的数据,最开始的做法是现将数据存储在数据库,然后写个脚本,隔五分钟扫描数据表再处理数据,实际效果并不好。因为系统本身一直在用rabbitmq做异步处理任务的中间件,所以想…

mysql 触发器 库存管理_Mysql中的触发器(库存、用户订单中用到)

什么是触发器?触发器是数据库的一个程序,他是用来监听着数据表的某个行为,一旦数据表的这个行为发生了,马上执行相应的sql语句触发器的语法结构:create trigger触发器的名称触发器事件on监听的表名for each row行为发生…