一般分表操作有垂直拆分和水平拆分。顾名思义。

  1.  垂直拆分是指,这个表的列,即字段,要拆分成两个或多个表。

  这个应用场景比如:这个表字段,几个都是int、datetime等,有那么一个是text类型的,而这个text的字段还不是被经常检索,而其他几个字段要被经常检索。当出现效率问题时,我们可以考虑垂直拆分表。把这个text字段拆出来,可以提高检索效率。两个表建立关系可以利用原来表的主键。

  2.  水平拆分是指,把一个可能或者已经是大数据量的表拆分成多个表。

  一个表数据量很大时,比如超过百万或者更多,那么数据量仍然可能在扩充的时候,即便是加索引,检索效率也不高。很自然想到要表拆分。

  比如一张用户表,这个量会比较大。比如我根据业务的拓展形式,预算的量,我分成100张表。比如,user0,user1。。。user99。

  拆分以后,当然是尽可能让用户数据平均分散在各个表里。怎么对用户数据的存取呢?可以有多种方法,比如散列或者取模。

    1)取模方法(模上分表数):比如新增一个用户,我们可以利用数据库表的自增,建立一个专门生成主键id的表。利用这个表,我们得到用户表的最新id。比如生成的id是100,使用100%100,取模后是0,那么插入到user0表里;id是199,取模后插入user99里。

  存数据是这样,取数据同样道理。当我们知道这个用户的id后,比如是356,利用取模结果是56,我们就去user56表找这个id=356的数据。

    2)散列法:比如假设我们认为crc32()方法的后两位数字是随机生成的。

   返回表名的方法:

<?php

function userT($id){
$table = "user";
$str = crc32($table. $id);
return $table. substr($str, -2, 2);
}

  当然,如果不知道用户id,比如只知道昵称,去找用户数据。那么这样就比较坑爹了。就需要遍历表查找了。

  mysql分表有一篇文章写的不错,可以参考:http://blog.51yip.com/mysql/949.html

mysql分表操作的更多相关文章

  1. MySQL分表操作的例子

    USE project;DROP PROCEDURE IF EXISTS project.delete_test_user;delimiter $$CREATE PROCEDURE project.d ...

  2. mysql分表场景分析与简单分表操作

    为什么要分表 首先要知道什么情况下,才需要分表个人觉得单表记录条数达到百万到千万级别时就要使用分表了,分表的目的就在于此,减小数据库的负担,缩短查询时间. 表分割有两种方式: 1水平分割:根据一列或多 ...

  3. mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  4. MySQL分表(Partition)学习研究报告

    最近在开发一个新的项目,可能会产生大数据量,需要对部分表进行分表操作,故来研究学习MySQL的分表功能. 由于实验报告已经写成Exlce文件了,各位看过就直接下载吧:MySQL分表分析报告.xls 以 ...

  5. Mysql分表和分区的区别、分库分表介绍与区别

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  6. 【mysql】mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  7. mysql分表研究

    分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...

  8. mysql分表与分区表

    mysql分表与分区表 转自:http://blog.51yip.com/mysql/949.html   一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具 ...

  9. mysql分表,分区的区别和联系

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘 ...

随机推荐

  1. docker 安装jenkins

    基于docker 进行安装 软件,首先需要有docker环境. 1.docker 下载 jenkins 镜像 指定版本 ,因为低版本的后面安装 软件会失败(亲测). docker pull jenki ...

  2. css选择器:基本选择器

    基本选择器 1.通用元素选择器 *表示应用到所有的标签. *{ padding:0px; margin:0px; } 2.元素/标签选择器 匹配所有p标签的元素 p{ color:red; backg ...

  3. Salesforce的公式和验证规则

    公式 在Salesforce中,有些功能不需要从数据库中直接读取的数据,而是基于这些数据之间的关系来做出判断.这种情况下就要用到"公式"功能. 公式的概念和Excel中的公式类似, ...

  4. ios开发GCD(2)-dispatch_semaphore_t信号量计数器

    思考:现在有多个线程异步执行,我们想要同时最多只能执行2个或n个,该怎么办? dispatch_semaphore_t 看代码解析: NSLog(@"开始"); dispatch_ ...

  5. Ubuntu切换root身份,命令行以中文显示

    很多VPS商给的默认用户名并不是root,用以下命令处理即可: 1.修改root密码 sudo passwd root 输入密码,回车,再确认一次即可 2.更改密码后切换root身份 su root ...

  6. (后端)Java跨域过滤器

    private FilterConfig config = null; @Override public void init(FilterConfig config) throws ServletEx ...

  7. SVN——Couldn't perform atomic initialization

    前言   今天早上刚刚打开我的电脑,就被李总他们告知不能正确用SVN从服务器上下载代码了,然后看问题吧.问题其实也是本文的标题,并不难解决,写下来留个记录,顺便也算是一种分享.问题截图如下:    造 ...

  8. log4Net辅助类

    public class Log { private ILog logger; public Log(ILog log) { this.logger = log; } public void Debu ...

  9. 深度理解select、poll和epoll

    在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序.在大数据.高并发.集群等一些名词唱得火热之年代,select和poll的 ...

  10. Linux 小知识翻译 - 「端口限制」

    上次说了端口号相关的内容,这次聊聊「端口限制」的事. 经常看到关于安全的书籍上会说「不要开放多余的端口」,那么,如何限制端口才好呢? 实际,端口限制的方法大体上分的话有2种. 其一,「通过应用程序来处 ...