MySQL如何实现分库分表,如何提高查询效率

本人没有做过电商平台,但了解其中的道道,今天闲来无事,说说其中的道道。下边我要开始表演了。

在大型电商网站中,随着业务的增多,数据库中的数据量也是与日俱增,这时候就要将数据库进行分库分表了。

1、如何分库分表?

两种解决方案:垂直拆分、水平拆分

垂直拆分:根据业务进行拆分,比如可以将一张表中的多个字段拆成两张表,一张是不经常更改的,一张是经常改的。

水平拆分:即根据表来进行分割:比如user表可以拆分为user0,、user1、user2、user3、user4等

2、分库分表之后如何实现联合查询?

可以使用第三方中间件来实现,比如:mycat、shading-jdbc

原理解析:

当客户端发送一条sql查询:select * from user;此时中间件会根据有几个子表,拆分成多个语句:select * from user1;select * from user2;select * from user3等多条语句查询,然后将查询的结果返回给中间件,然后汇总给客户端。这些语句是并发执行的,所以效率会很高哦。

原文地址:https://www.cnblogs.com/mengtaoadmin/p/11184047.html

时间: 2024-08-12 18:28:57

MySQL如何实现分库分表,如何提高查询效率的相关文章

Mysql中的分库分表

mysql中的分库分表分库:减少并发问题分表:降低了分布式事务分表1.垂直分表把其中的不常用的基础信息提取出来,放到一个表中通过id进行关联.降低表的大小来控制性能,但是这种方式没有解决高数据量带来的性能损耗.优点1.拆分后业务清楚,达到专库专用.2.可以实现热数据和冷数据的分离,将不经常变化的数据和变动较大的数据分散到不同的库/表里面.3.便于维护.缺点1.不能解决数据量大带来的性能损耗,读写的压力依旧很大.2.不同的业务不能夸库关联,只能通过业务关联.2.水平分表以某个字段按照一定的规则将一

MySQL纯透明的分库分表技术还没有

MySQL纯透明的分库分表技术还没有 种树人./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033E22AE348AEB5660FC2140AEC35850C4DA997 --proxy-master-addresses=172.16.132.87:[email protected] --proxy-master-addresses=172.16.3.92:[email protected] --

MySQL订单分库分表多维度查询

转自:http://blog.itpub.net/29254281/viewspace-2086198/ MySQL订单分库分表多维度查询 MySQL分库分表,一般只能按照一个维度进行查询. 以订单表为例, 按照用户ID mod 64 分成 64个数据库.按照用户的维度查询很快,因为最终的查询落在一台服务器上.但是如果按照商户的维度查询,则代价非常高.需要查询全部64台服务器.在分页的情况下,更加恶化.比如某个商户查询第10页的数据(按照订单的创建时间).需要在每台数据库服务器上查询前100条数

MYSQL数据切分(分库分表),读写分离和主从复制

参考1 参考2 对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式. 数据切分:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失: 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性: 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题: 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量: 这里主要谈及数据切分和其相关数据库优

mysql主从同步分库分表同步

一.mysql数据库的安装 分别在master 和slave上源码安装mysql数据库 1.1 安装相关包1.1.1 cmake软件cd /home/oldboy/tools/tar xf cmake-2.8.8.tar.gzcd cmake-2.8.8./configure#CMake has bootstrapped.  Now run gmake.gmakegmake installcd ../ 1.1.2 依赖包yum install ncurses-devel -y 1.2 开始安装m

MyCat:对MySQL数据库进行分库分表

本篇前提: mycat配置正确,且能正常启动. 1.schema.xml <table>标签: dataNode -- 分片节点指定(取值:dataNode中的name属性值)rule ------ 分片规则选择(取值:rule标签中的name属性值) 1 2 3 [[email protected] conf]# vim schema.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE mycat:schema SYSTEM

SqlServer和MySql允许脏读的实现方式,提高查询效率

--Sql Server 允许脏读查询sqlselect * from category with(nolock) --MySql 允许脏读查询sql Mysql没有语法糖,需要原生的sqlSET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;select * from category ;COMMIT ; 注意Session是指允许当前会话脏读,如果没有是是整个MySql实例允许脏读

Shell脚步之MySql分库分表备份

前言 数据备份的重要性已经不用过多强调了.这篇文章我们就以MySQL数据进行演示如何通过Shell脚步进行MySQL数据库的分库分表备份. 要求 Linux命令要求比较熟悉,Shell脚步语法规则也要熟悉,MySQL的数据库备份命令要比较熟悉.下面也会提到,如果有不懂得希望可以自行查阅资料学习. 命令窗口查询MySQL数据库列表 上面我们就通过Linux命令窗口查询到了MySQL的数据库列表 去除MySQL自带数据库获取目标业务数据库列表,查看表列表 备注:通过过滤掉MySQL自带数据库,那么就

数据库-sharding之分库分表

1.分库分表(sharding)的原因 在网站初期,为了节约资源,常常部署单点(单一服务器)mysql作为数据存储.随着网站业务量增大,机器的性能有限,单点mysql的I/O性能瓶颈马 上达到高潮. ?为了突破单节点I/O的性能,聪明的架构师开始引入多节点,这就是所谓分库.如果说单节点是单线程串行计算,那么多节点就是多线程并行计算.多节 ?点的mysql服务借鉴了并行的思想,将原本对单点的操作分散到N台机器上,提升的效果明显. ?有可能我们的网站发展很迅速,每天的注册用户很多,然而这些注册用户都