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

  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. 洛谷P3899 [湖南集训]谈笑风生(线段树合并)

    题意 题目链接 Sol 线段树合并板子题,目前我看到两种写法,分别是这样的. 前一种每次需要新建一个节点,空间是\(O(4nlogn)\) 后者不需要新建,空间是\(O(nlogn)\)(面向数据算空 ...

  2. 【读书笔记】iOS-基带攻击

    一,iOS设备中的蜂窝网络通信栈运行在专门的芯片上,这个芯片就是数字基带处理器. 参考资料:<黑客攻防技术宝典-iOS实战篇>

  3. php获取数据库中数据

    <?php header("Content-type:text/html;charset=utf-8");//字符编码设置 $servername = "local ...

  4. loadrunner 运行脚本-Run-time Settings之Pacing设置

    运行脚本-Run-time Settings之Pacing设置 by:授客 QQ:1033553122   As soon as the previous iteration ends 前一个迭代一结 ...

  5. Button's four click events

    第一种:内部类的方式 1 package com.example.phonedialer; 2 3 import com.example.click2.R; 4 5 import android.ne ...

  6. 通过logstash过滤、分析日志数据

    logstash是怎么工作的呢? Logstash是一个开源的.服务端的数据处理pipeline(管道),它可以接收多个源的数据.然后对它们进行转换.最终将它们发送到指定类型的目的地.Logstash ...

  7. vsftpd不支持目录软链接的解决办法

    vsftpd本身不支持软连接,而在用FTP共享的时候又不想移动文件位置,便在网上找到了一个workaround: Linux内核从2..0开始支持把一部分文件系统挂载到文件系统中的其他位置,mount ...

  8. C++基础算法学习——猜假币

    有12枚硬币.其中有11枚真币和1枚假币.假币和真币重量不同,但不知道假币比真币轻还是重.现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来).例题 ...

  9. Windows 下配置 Apache 支持 https

    1.打开cmd ,输入  F: // 切换到Apache安装路径,我的Apache安装目录在 F盘 2.cd F:\Apache\bin 3.set "openssl_conf = F:\A ...

  10. JVM虚拟机查找类文件的顺序

    JVM查找类文件的顺序: 在doc下使用set classpath=xxx, 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件. 如果配置了classpath环境,JVM ...