MySQL 数据库表的水平拆分

  优化数据库结构之数据库表的水平拆分

  水平拆分后的每个表结构是相同的,有利于解决单表记录数量过多的问题。

  拆分方法:

  1 id执行hash运算

  如果拆分成5个表,则使用mod(id, 5)取出0-4。

  2 根据散列值把数据存到不同的表中。

  问题:

  1 跨分区表进行数据查询

  2 统计及后台报表操作

  解决方法:

  前后端业务分离,前端查询分区表,后端统计时使用汇总表。

  参考资料

  数据库表的水平拆分

原文地址:https://www.cnblogs.com/WJQ2017/p/8505535.html

时间: 2024-08-26 17:32:15

MySQL 数据库表的水平拆分的相关文章

mysql关于数据库表的水平拆分和垂直拆分

最初知道水平垂直分表的时候是刚参加工作不久的时候,知道了这个概念,但是公司用户量和数据量始终没上来,所以也没用到过,知道有一天到了一家新公司后,这些才被应用到实际开发中,这里我就大概说说关于水平和垂直的拆分. 分表的概念还是比较好理解的,就拿本网站的评论表展开讲讲,源于数据量较大,当评论表有CURD操作时,单张表表现的可能有些力不从心,当然这里还能引申出关于读写速度的其他好多概念:数据库读写分离,NoSql等等. 垂直拆分:顾名思义是将表垂直着给拆掉,即:(下面是省略掉字段的一个表) +----

数据库表的水平拆分和垂直拆分

垂直拆分:顾名思义是将表垂直着给拆掉,即:(下面是省略掉字段的一个表)+--------+---------+--------+--------+-------+---------+---------+--------+-----+-------------+--------+-----------+------+--------+ | userid | groupid | areaid | amount | point | modelid | message | islock | vip | 

关于数据库表的水平拆分和垂直拆分

垂直拆分 垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表 通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的列放在一张表中; 垂直拆分更多时候就应该在数据表设计之初就执行的步骤,然后查询的时候用jion关键起来即可; 水平拆分 水平拆分是指数据表行的拆分,表的行数超过200万行时,就会变慢,这时可以把一张的表的数据拆成多张表来存放. 水平拆分的一些技巧 1. 拆分原则 通常情况下,我们使用取模的方式来进行

mysql大表的水平拆分案例详解

MySQL5.5表的水平拆分

一:业务背景 二:第一种业务水平拆分方案 三:第二种业务水平拆分方案 1.1由于业务量的急剧增加,某张表的数据越来越大,现在假设的情况为某家公司的P2P网站,由于前期宣传比较好,在近三个月的时间里业务量急剧增加,使得流水记录表(trade)的数据量变的越来越大,已经超过300万行记录,预计年内流水表的记录可能会超过1000万行,这个时候就需要考虑做表的水平拆分了 1.2 假设随着业务量的增加,用户量也增加了,由以前的几千个用户上升到100万,也想对其进行水平拆分 2.1假设年内达到1000万行记

MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题

Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字段ishaspic:新添字段时,报错 [SQL] alter table WorkTask add ishaspic int(10) Null;[Err] 1034 - Incorrect key file for table 'WorkTask'; try to repair it 解决方案:新建

查看和改动MySQL数据库表存储引擎

要做一名合格的程序猿,除了把代码写的美丽外,熟知数据库方面的知识也是不可或缺的.以下总结一下怎样查看和改动MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';(注:将where条件去掉后能够查看某个数据库中全部表的存储引擎情况)        3.改动表引擎方法:alter t

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

【初学菜鸟作-MySQL数据库表的基本操作与权限管理】

表基本操作练习 1 复制用户信息表user的所有记录到userdb表里. mysql> create table userdb select * fromuser; 2 查看userdb表的表结构 mysql> desc userdb; 3 删除userdb表的所有记录 mysql> delete from userdb 4 把name字段设置为index字段 mysql> create index name on userdb(name) 5 添加编号字段id  在所有字段上方,