- 浏览: 960306 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (189)
- 方案流程图及架构 (5)
- j2ee (5)
- ajax (2)
- oracle (1)
- pl/sql (0)
- designpattern (0)
- searchengine (2)
- mysql (28)
- sso (3)
- jvm (3)
- uml (0)
- oo (1)
- dboptimize (3)
- web2.0 (2)
- unix/linux (1)
- hadoop (4)
- mahout (0)
- android (2)
- html5 (0)
- solr (0)
- 分词 (0)
- 机器学习 (0)
- 育儿 (2)
- linux (5)
- im (1)
- hive (1)
- nginx (1)
- mysql复合索引的使用场景 (0)
- hadoop搭建报错 (1)
- qps (1)
- 架构 (1)
- nosql (1)
- 推荐引擎 (5)
- 云存储 (1)
- 职业生涯 (1)
- 破解 instsall4j (1)
- 数字教育 微课程 (1)
- khan 可汗学院 (1)
- socket (2)
- 消息队列 (0)
- java (0)
- 视频流媒体 (1)
- memcache (1)
- 开源 (1)
- reactor (1)
- spi (1)
- 持续构建 ci (1)
- zookeeper (3)
- tomcat (1)
- mycat (1)
- mysql mycat sysbench (1)
- mycat mysql (1)
- svn (1)
- id发号器 (1)
- 多机房 (2)
- 分布式事务 (3)
- 电商 (1)
- 库存 (1)
最新评论
-
baichoufei90:
hadoop权威指南说ZK的zab协议不是用的paxos算法。 ...
zookeeper原理(转) -
shin1355:
看了一小部分,看不下去了,
zookeeper原理(转) -
b_l_east:
表示没看懂楼主关于选举算法的描述,顿时没了读下去的兴致
zookeeper原理(转) -
prince4426:
好前沿的技术呀
hive选型讨论 -
zk519720303:
zookeeper原理(转)
一,什么是mysql分表,分区
什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法
什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例
二,mysql分表和分区有什么区别呢
1,实现方式上
a),mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。
- [root@BlackGhost test]# ls |grep user
- alluser.MRG
- alluser.frm
- user1.MYD
- user1.MYI
- user1.frm
- user2.MYD
- user2.MYI
- user2.frm
[root@BlackGhost test]# ls |grep user alluser.MRG alluser.frm user1.MYD user1.MYI user1.frm user2.MYD user2.MYI user2.frm
简单说明一下,上面的分表呢是利用了merge存储引擎(分表的一种),alluser是总表,下面有二个分表,user1,user2。他们二个都是独立的表,取数据的时候,我们可以通过总表来取。这里总表是没有.MYD,.MYI这二个文件的,也就是说,总表他不是一张表,没有数据,数据都放在分表里面。我们来看看.MRG到底是什么东西
- [root@BlackGhost test]# cat alluser.MRG |more
- user1
- user2
- #INSERT_METHOD=LAST
[root@BlackGhost test]# cat alluser.MRG |more user1 user2 #INSERT_METHOD=LAST
从上面我们可以看出,alluser.MRG里面就存了一些分表的关系,以及插入数据的方式。可以把总表理解成一个外壳,或者是联接池。
b),分区不一样,一张大表进行分区后,他还是一张表,不会变成二张表,但是他存放数据的区块变多了。
- [root@BlackGhost test]# ls |grep aa
- aa#P#p1.MYD
- aa#P#p1.MYI
- aa#P#p3.MYD
- aa#P#p3.MYI
- aa.frm
- aa.par
[root@BlackGhost test]# ls |grep aa aa#P#p1.MYD aa#P#p1.MYI aa#P#p3.MYD aa#P#p3.MYI aa.frm aa.par
从上面我们可以看出,aa这张表,分为二个区,p1和p3,本来是三个区,被我删了一个区。我们都知道一张表对应三个文件.MYD,.MYI,.frm。分区呢根据一定的规则把数据文件和索引文件进行了分割,还多出了一个.par文件,打开.par文件后你可以看出他记录了,这张表的分区信息,根分表中的.MRG有点像。分区后,还是一张,而不是多张表。
2,数据处理上
a),分表后,数据都是存放在分表里,总表只是一个外壳,存取数据发生在一个一个的分表里面。看下面的例子:
select * from alluser where id=’12′表面上看,是对表alluser进行操作的,其实不是的。是对alluser里面的分表进行了操作。
b),分区呢,不存在分表的概念,分区只不过把存放数据的文件分成了许多小块,分区后的表呢,还是一张表。数据处理还是由自己来完成。
3,提高性能上
a),分表后,单表的并发能力提高了,磁盘I/O性能也提高了。并发能力为什么提高了呢,因为查寻一次所花的时间变短了,如果出现高并发的话,总表可以根据不同的查询,将并发压力分到不同的小表里面。磁盘I/O性能怎么搞高了呢,本来一个非常大的.MYD文件现在也分摊到各个小表的.MYD中去了。
b),mysql提出了分区的概念,我觉得就想突破磁盘I/O瓶颈,想提高磁盘的读写能力,来增加mysql性能。
在这一点上,分区和分表的测重点不同,分表重点是存取数据时,如何提高mysql并发能力上;而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的。
4),实现的难易度上
a),分表的方法有很多,用merge来分表,是最简单的一种方式。这种方式根分区难易度差不多,并且对程序代码来说可以做到透明的。如果是用其他分表方式就比分区麻烦了。
b),分区实现是比较简单的,建立分区表,根建平常的表没什么区别,并且对开代码端来说是透明的。
三,mysql分表和分区有什么联系呢
1,都能提高mysql的性高,在高并发状态下都有一个良好的表面。
2,分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
转载自作者:海底苍鹰
地址:http://blog.51yip.com/mysql/1029.html
发表评论
-
MySQL索引背后的数据结构及算法原理
2016-10-24 19:12 1317摘自http://blog.codinglabs.org/a ... -
MySQL的InnoDB索引原理详解
2016-03-29 11:18 696原文链接 http://www.codeceo.com/a ... -
sysbench压力测试
2015-10-20 10:58 28171.下载sysbench并安装 wget https:// ... -
mysql本地可以登录远程无法登录
2014-05-13 12:34 704mysql创建的用户本地可以登录,但是远程无法登录 原来是 ... -
mysql创建的用户本地无法登录
2014-05-13 12:33 598今天遇到一个诡异的问题,mysql创建的用户在本地无法登录, ... -
mysql的为什么?
2013-12-04 17:01 0什么是锁? 锁是怎么实现的? 高并发情况下锁对性能的影 ... -
mysqldump: Got error: 1449: The user specified as a definer
2013-03-07 15:20 1666备份数据库遇到如下的错误,我遇到了很多次,但是每次都忘记是怎么 ... -
mysql 5.1.34 主从复制部署手册
2013-01-28 09:21 1497******************************* ... -
mysql tps qps
2012-11-12 11:49 1303TPS - Transactions Per Second(每 ... -
mysql复合索引的使用场景
2011-11-22 15:54 23591、复合索引使用的目的是什么? :能形成索引覆盖,提高whe ... -
mysql 动态迁移架构(转)
2011-05-23 14:43 1606mysql 的架构已经讨论 ... -
mysql主从数据不一致的解决方法
2011-05-12 17:45 4420转载自 http://hi.baidu.com/thinkin ... -
mysql索引
2011-05-11 15:05 1119一、 MySQL: 索引以B树 ... -
mysql 分区功能介绍及实例
2011-04-01 18:54 1527一,什么是数据库分区 ... -
mysql 分表的三个方法
2011-04-01 18:51 1406一,先说一下为什么要 ... -
mysql临时表技巧
2011-01-25 11:23 948给定一个user表,包含id和uid两列,其中uid列可能有重 ... -
mysql查看数据库中表的大小、索引大小
2011-01-20 12:44 2550SELECT concat(round(table_ro ... -
mysql 存储过程
2010-12-13 14:09 1290最近在看运营系统的源码,里面用了很多存储过程来生成报表,mys ... -
mysql 从数据库slave 状态为no的解决方法
2010-12-07 10:27 1313从数据库的状态显示为如下 Slave_IO_Ru ... -
mysql数据导出到文件
2010-12-03 16:03 1326数据导出到文件,网上很多帖子都是乱写,郁闷一下,这么简单的东西 ...
相关推荐
《MySQL分区分表方案实践手册》是一本深入探讨MySQL数据库中分区与分表技术的专业书籍。MySQL作为广泛应用的关系型数据库管理系统,随着数据量的增长,性能优化成为了一个关键问题。分区分表是解决大数据存储和查询...
### MySQL分区分表的设计及实现 #### 一、引言 随着信息技术的飞速发展,数据量呈现爆炸式增长,海量数据的管理和处理成为了一项挑战。尤其在关系型数据库中,如MySQL这样的系统,当单个表的数据量达到一定规模后...
其中有每个命令的使用说明与注释。并增加了清理数据的方式。以及导入输入的注意事项
MySQL分表和分区最佳攻略 word版本,
MySQL 分区和分表技术总结 MySQL 分区和分表技术是数据库性能优化的重要手段,特别是在大型数据库系统中。以下是 MySQL 分区和分表技术的详细介绍: 什么是分表? 分表是将一个大表按照一定的规则分解成多张具有...
常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致...分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。
文件`mysql分表创建.sql`很可能包含了创建分表的SQL脚本,如创建新表、插入数据、设置分区等操作。具体操作时,应确保理解分表策略,合理选择分片键,避免数据热点,并测试分表后的查询性能。 总之,MySQL分表是...
这里的“mysql分库分表分区1”主要讨论的是 MySQL 中的表分区技术,这是一种将大表物理分割为多个更小、更易管理的部分的方法。下面将详细介绍四种常见的分区类型:RANGE、LIST、HASH 和 KEY。 1. **RANGE分区**: ...
MySQL 分区和分表的干货总结.doc
日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致...分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率
在互联网公司中,mysql分区表是一个比较少用的技术,这是因为分区表存在一些缺陷和限制,使得互联网公司更多地选择自己分库分表来水平扩展数据库。 首先,分区表的设计需要考虑到分区键的设计,不同的分区键设计会...
**分表和分区的区别**: 1. **实现方式**:分表会产生多个独立的表,而分区在同一张表内部进行数据区块划分。 2. **数据处理**:分表需要通过总表或其他机制协调查询,分区则直接操作单一表的分区。 3. **性能优化侧...
MySQL的分表和分区是数据库管理中两种常见的优化策略,旨在提高大数据量下的查询性能和系统稳定性。它们虽然在目的上有相似之处,但实现方式和效果存在显著差异。 1. **分表**:分表是将一张大表拆分成多个小表,每...
MySQL中的分表和分区是两种不同的数据库优化策略,它们旨在管理和优化大数据量的表,以提升查询性能和系统效率。 **分表**是指将一张大表拆分成多个小表,每个小表都是独立完整的表,拥有自己的.MYD数据文件、.MYI...
当数据量达到一定规模,例如超过100万条记录,性能问题就会显现,此时就需要采取相应的优化策略,如分表或分区。本文主要讨论如何使用PHP操作MySQL数据库进行分表。 分表是一种常见的数据库扩展策略,它通过将一个...
二、mysql分表和分区有什么区别呢 1、实现方式上 a)mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。 代码如下:...
Java分区分表是一种数据库优化策略,它通过将大型表的数据分散到多个物理表中来提高查询性能和系统处理能力。在本项目"java分区分表项目"中,我们重点研究了Sharding-JDBC,这是一个轻量级的Java库,可以在不改变...
当一个表数据记录过大时就会出现性能瓶颈,而一般对应的解决办法是要么做分区表,要么分表,分区表就不说了,分表又分为垂直分割和水平分割,具体区 别请自行搜索。一般而言,分库分表属于水平分割,按照一定的规则...