mysql 垂直拆分 原因_mysql的水平拆分和垂直拆分

1,水平分割:

例:QQ的登录表。假设QQ的用户有100亿,如果只有一张表,每个用户登录的时候数据库都要从这100亿中查找,会很慢很慢。如果将这一张表分成100份,每张表有1亿条,就小了很多,比如qq0,qq1,qq1...qq99表。

用户登录的时候,可以将用户的id%100,那么会得到0-99的数,查询表的时候,将表名qq跟取模的数连接起来,就构建了表名。比如123456789用户,取模的89,那么就到qq89表查询,查询的时间将会大大缩短。

这就是水平分割。

2,垂直分割:

垂直分割指的是:表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降低了性能。这时需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。

例如学生答题表tt:有如下字段:

Id name 分数 题目 回答

其中题目和回答是比较大的字段,id name 分数比较小。

如果我们只想查询id为8的学生的分数:select 分数 from tt where id = 8;虽然知识查询分数,但是题目和回答这两个大字段也是要被扫描的,很消耗性能。但是我们只关心分数,并不想查询题目和回答。这就可以使用垂直分割。我们可以把题目单独放到一张表中,通过id与tt表建立一对一的关系,同样将回答单独放到一张表中。这样我们插叙tt中的分数的时候就不会扫描题目和回答了。

3,其他要点:

1)存放图片、文件等大文件用文件系统存储。数据库只存储路径,图片和文件存放在文件系统,甚至单独存放在一台服务器(图床)。

2)数据参数配置。

最重要的参数就是内存,我们主要用的innodb引擎,所以下面两个参数调的很大:

innodb_additional_mem_pool_size=64M

innodb_buffer_pool_size=1G

对于MyISAM,需要调整key_buffer_size,当然调整参数还是要看状态,用show status语句可以看到当前状态,以决定该调整哪些参数。

4,合理的硬件资源和操作系统

如果机器的内存超过4G,那么应当采用64位操作系统和64位MySQL。

案例:

简单购物系统暂设涉及如下表:

1.产品表(数据量10w,稳定)

2.订单表(数据量200w,且有增长趋势)

3.用户表 (数据量100w,且有增长趋势)

以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万

垂直拆分:

解决问题:

表与表之间的io竞争

不解决问题:

单表中数据量增长出现的压力

方案:

把产品表和用户表放到一个server上

订单表单独放到一个server上

水平拆分:

解决问题:

单表中数据量增长出现的压力

不解决问题:

表与表之间的io争夺

方案:

用户表通过性别拆分为男用户表和女用户表

订单表通过已完成和完成中拆分为已完成订单和未完成订单

产品表 未完成订单放一个server上

已完成订单表盒男用户表放一个server上

女用户表放一个server上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThoughtWorks洞见领域驱动设计思维导图笔记

思维导图url:洞见领域驱动设计 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

大江大海2018: 冲浪科技之巅不可错过的十大数字前沿趋势

来源:腾讯研究院概要:所有主流科技公司、创业公司都相继进入战线,为科技的未来发展打造必要的元素。序 言2017年,人工智能的“热身”刚刚结束。继李世石人机大战,AlphaGo升级再复出,三度进化,让…

node mysql 增删改查_Nodejs操作MySQL - 增删改查

先安装npm模块项目npm init安装mysqlnpm install mysql --saveNodejs 连接msyql// 导入mysqlconst mysql require(mysql);// 连接mysqlconst connection mysql.createConnection({host: 127.0.0.1,user: root,password: password,port: 3306,database: test});connection.con…

设计原本思维导图笔记

https://www.processon.com/view/link/601d04a87d9c0830de487b91

深度长文:智能手机的社会学研究

来源:36Kr编辑:郝鹏程媒介是人的延伸,智能手机是直接嫁接在我们身体上的一种器官这是一篇长文,以社会学的研究路径展示了智能手机的影响:它潜移默化、无影无踪。斯麦兹”受众商品论“的论断仍然存在,乔姆斯…

python22个字符串长度_python字符串处理内置方法一览表

序号方法及描述1capitalize()将字符串的第一个字符转换为大写2center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。3count(str, beg 0,endlen(string))返回 str 在 string 里面出现的次数,如果…

Mockito教程

https://www.cnblogs.com/Ming8006/p/6297333.html 目录 1 Mockito 介绍 1.1 Mockito是什么? 1.2 为什么需要Mock 1.3 Stub和Mock异同 1.4 Mockito资源 1.5 使用场景 2 使用Mockito 2.1 验证行为 2.2 模拟我们所期望的结果 2.3 RETURNS_SMART_NU…

日本科学家利用AI扫描大脑活动,「看到」了你正在「想什么」

原文来源:biorxiv作者:Guohua Shen、Tomoyasu Horikawa1、Kei Majima、Yukiyasu Kamitani「雷克世界」编译:嗯~阿童木呀、KABUDA你有没有想象过,将来的某一天,计算机可以“看到”你在想什么。图表由Kamitani实验室提供…

python正方形阴影面积计算_利用Python求阴影部分的面积实例代码

一、前言说明今天看到微信群里一道六年级数学题,如下图,求阴影部分面积看起来似乎并不是很难,可是博主添加各种辅助线,写各种方法都没出来,不得已而改用写Python代码来求面积了二、思路介绍1.用Python将上图画在坐标轴…

Yann LeCun力挺观点:算法对AI提升不大,奇点仍然很遥远

来源:AI前线策划|Tina,译者|薛命灯、核子可乐、Debra什么是奇点(Singularity)?奇点是指在未来某个假想的时间点,因为技术发展太过迅速,以致于达到我们无法理解的地步。奇…

Arthas-MathGame

import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.TimeUnit; /*** MathGame.<br>* author gongqiang <br>* version 1.0.0 2021年6月4日<br>* see * since JDK 1.5.0*/ public class MathGame {pr…

python matplotlib 散点图_python matplotlib散点图颜色

我试图用x和y网格创建散点图&#xff0c;其中每个点通过预先指定的值获得颜色&#xff1a;{x: 1, y: 2, value: n}我有一个x和y的列表和另一个值列表&#xff0c;尝试使用这个&#xff1a;^{pr2}$错误&#xff1a;Traceback (most recent call last):File "C:\python3.6.6…

PNAS:神经元网络对于长期记忆的重要性

来源&#xff1a;中国生物技术网概要&#xff1a;大脑如何长期存储记忆一直是神经科学家的一个永恒的谜团。大脑如何长期存储记忆一直是神经科学家的一个永恒的谜团。在一项新研究中&#xff0c;来自挪威奥斯陆大学整合神经可塑性研究中心(CINPLA)的研究人员发现&#xff0c;神…

mid函数怎么用mysql_MySQL MID()函数的用法详解(代码示例)-mysql教程-学派吧

在MySQL中&#xff0c;MID()函数返回从指定位置开始的子字符串。MID()和SUBSTR()都是SUBSTRING()的同义词。基本语法是这样的:MID(str,pos,len)这里&#xff0c;str是字符串&#xff0c;pos是起始子字符串的位置&#xff0c;len是一个可选参数&#xff0c;它决定从起始位置返回…

线程WAITING--BlockingQueueDemo

import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue;/*** TODO 在此写上类的相关说明.<br>* author gongqiang <br>* version 1.0.0 2021年6月2日<br>* see * since JDK 1.5.0*/ public…

语音入口大战升级!亚马逊Alexa放招:即插即用,霸占你所有空间

来源&#xff1a;AI科技大本营&#xff08;微信ID&#xff1a;rgznai100)翻译 | 刘畅编辑 | Donna&#xff0c;波波大多数人都认为&#xff0c;智能音箱就是语音入口之争的主战场……比如双十一期间&#xff0c;阿里巴巴不惜血本也要99元强推天猫精灵&#xff0c;亏损数亿终于砸…

python开发基本流程_第一阶段:Python开发基础 day06  Python基础语法入门--流程控制(二)...

一、上节课内容回顾三种格式化输出占位符format格式化f-String格式化基本运算符算术运算符比较运算符逻辑运算符赋值运算符身份运算符运算符的优先级流程控制之if判断单分支结构双分支结构多分支结构if判断的嵌套二、流程控制之while循环2.1 什么是循环当你需要重复干一件事情&…

解密人类变革时代:2018年13大科技趋势

来源&#xff1a;中国智慧城市导刊近日&#xff0c;美国著名创投研究机构CB Insights发布了《13 Trends Shaping Tech In 2018》报告&#xff0c;在通过对过去一年的科技研究归总分析后&#xff0c;CB Insights公布了2018年将会兴起并重塑科技行业的13大趋势。汽车可“订阅”使…

线程Blocked--SynchronizedDemo

import java.util.Random;/*** TODO 在此写上类的相关说明.<br>* author gongqiang <br>* version 1.0.0 2021年6月3日<br>* see * since JDK 1.5.0*/ public class SynchronizedDemo {/*** 中间值.*/private Integer value;/*** param args*/public static …

redis取出list最边的一个_六、Redis列表(list)类型参考记录(1)

列表(list)类型可以存储一个有序的字符串列表。常用操作是向列表两端添加元素&#xff0c;或者获得列表的某个片段。列表类型内部使用双向链表(bouble linked list)实现&#xff0c;因此向两端添加元素的时间复杂度为O(1)&#xff0c;获取越接近两端的元素速度就越快。缺点通过…