【mysql】关于切分查询

转载 2016年06月01日 10:35:22

原文地址:http://blog.csdn.net/moxiaomomo/article/details/9337433

对于大查询有时需要‘分而治之’,将大查询切分为小查询: 每个查询功能完全一样,但只完成原来的一小部分,每次查询只返回一小部分结果集。


删除旧的数据就是一个很好地例子。定期清理旧数据时,如果一条sql涉及了大量的数据时,可能会一次性锁住多个表或行,耗费了大量的系统资源,却阻塞了其他很多小的但重要的查询。将一个大得DELETE语句切分为较小的查询时,可以尽量减少影响msql的性能,同时减少mysql复制造成的延迟。

例如,每个月会运行一次的语句,以清理三个月前的数据:

mysql> DELETE FROM messages WHERE dt<DATE_SUB(NOW(), INTERVAL 3 MONTH);

可以用以下的方法来完成这样的任务:

rows_affected = 0
do {
     rows_affected = do_query("DELETE FROM messages WHERE dt<DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000")
}while rows_affected>0

一次删除一万行数据是个比较高效且对服务器影响较小的做法。同时如果每次删除数据时暂停一会,可以将服务器原本的一次性压力分散到一个较长的时间段中,从而减少删除时锁表锁行的时间。

(参考自《高性能MySQL》)

《高性能MySQL(第3版)》之切分查询

有时候对于一个大查询我们需要“分而治之”,将大查询切分成小查询,每个查询功能完全一样,只完成一小部分,每次只返回一小部分查询结果。 删除旧的数据库就是一个很好的例子。定期地清除大量数据时,如...
  • maxine_du
  • maxine_du
  • 2016年08月04日 13:46
  • 180

MySQL 水平拆分(读书笔记整理)

1,水平拆分的介绍一般来说,简单的水平切分主要是将某个访问极其平凡的表再按照某个字段的某种规则来分散到多个表之中,每个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就...
  • mchdba
  • mchdba
  • 2015年05月30日 21:54
  • 7388

mysql水平拆分与垂直拆分的详细介绍

垂直拆分 垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表 通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分...
  • yjh314
  • yjh314
  • 2016年06月21日 16:29
  • 625

数据库水平切分实现原理(一)

1.引言       随着互联网应用的普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿pv无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问...
  • cpf2016
  • cpf2016
  • 2015年07月05日 13:10
  • 501

MySQL垂直和水平切分

replication的限制:一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈。数据切分(sharding):通过某种特定的条件,将我们存放在同一个数据库中...
  • rnZuoZuo
  • rnZuoZuo
  • 2014年09月14日 20:21
  • 872

Mysql数据库切分及整合方案

我们已经很清楚通过数据库的数据切分可以极大的提高系统的扩展性。但是,数据库中的数据在经过垂直和(或)水平切分被存放在不同的数据库主机之后,应用系统面临的最大问题就是如何来让这些数据源得到较好的整合,可...
  • cyjch
  • cyjch
  • 2016年06月30日 16:17
  • 2449

MySql切分字符串,SUBSTRING用法

1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from ...
  • yy_2011
  • yy_2011
  • 2012年07月19日 14:40
  • 2845

数据切分——MySql表分区概述

定义:        表的分区指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数...
  • jhq0113
  • jhq0113
  • 2015年03月24日 16:08
  • 4681

数据库水平切分方法

转:http://www.cnblogs.com/codebean/archive/2011/06/02/2068768.html 在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数...
  • wxwzy738
  • wxwzy738
  • 2013年12月11日 18:01
  • 3023

Amoeba For MySQL入门:实现数据库水平切分

当系统数据量发展到一定程度后,往往需要进行数据库的垂直切分和水平切分,以实现负载均衡和性能提升,而数据切分后随之会带来多数据源整合等等问题。如果仅仅从应用程序的角度去解决这类问题,无疑会加重应用程度的...
  • czp11210
  • czp11210
  • 2016年03月07日 22:52
  • 671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【mysql】关于切分查询
举报原因:
原因补充:

(最多只允许输入30个字)