mysql分表操作
一般分表操作有垂直拆分和水平拆分。顾名思义。
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分表操作的更多相关文章
- MySQL分表操作的例子
USE project;DROP PROCEDURE IF EXISTS project.delete_test_user;delimiter $$CREATE PROCEDURE project.d ...
- mysql分表场景分析与简单分表操作
为什么要分表 首先要知道什么情况下,才需要分表个人觉得单表记录条数达到百万到千万级别时就要使用分表了,分表的目的就在于此,减小数据库的负担,缩短查询时间. 表分割有两种方式: 1水平分割:根据一列或多 ...
- mysql分表和表分区详解
为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...
- MySQL分表(Partition)学习研究报告
最近在开发一个新的项目,可能会产生大数据量,需要对部分表进行分表操作,故来研究学习MySQL的分表功能. 由于实验报告已经写成Exlce文件了,各位看过就直接下载吧:MySQL分表分析报告.xls 以 ...
- Mysql分表和分区的区别、分库分表介绍与区别
分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...
- 【mysql】mysql分表和表分区详解
为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...
- mysql分表研究
分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...
- mysql分表与分区表
mysql分表与分区表 转自:http://blog.51yip.com/mysql/949.html 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具 ...
- mysql分表,分区的区别和联系
一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘 ...
随机推荐
- JMeter 检查点之响应断言(Response Assertion)
检查点之响应断言(Response Assertion) by:授客 QQ:1033553122 JMeter断言用于对sampler(采样器)进行额外检查,且在相同作用域中,每执行完一个samp ...
- spring使用BeanPostProcesor实现AOP源码分析
源码 AbstractApplicationContext#public void refresh() throws BeansException, IllegalStateException { f ...
- Linux下修改IP、DNS、路由命令行设置
本文最后修改时间:20180313 一.快速修改,重启后设置就没了 ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up route add defa ...
- echart参数设置——曲线图
{ title: { text: '请求返回码分布', subtext: '实时数据' }, tooltip: { trigger: 'axis', position: function (point ...
- [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED3.txt
[20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED3.txt --//简单探究12c TABLE ACCESS BY INDEX ROWID BATCH ...
- MySQL内连接(INNER JOIN)
MySQL INNER JOIN子句介绍 MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. INNER JOIN子句是SELECT语句的可 ...
- python免费发送短信
pip install twilio from twilio.rest import Client # Your Account SID from twilio.com/console account ...
- Tomcat 下配置一个ip绑定多个域名
原文:http://pkblog.blog.sohu.com/68921246.html 在网上找了半天也没找到相关的资料,都说的太含糊.本人对tomcat下配置 一ip对多域名的方法详细如下,按下面 ...
- JEECG 开源平台全视频和文档
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/26488439 jeecg v3.0入门 ...
- Hadoop 基本概念
一.Hadoop 简介 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储. 从其定 ...