带您了解什么是Mysql分表

数据库 MySQL
Mysql分表是把若干个存储相同类型数据的表分成几个表分表存储,在提取数据的时候,不同的用户访问不同的表,互不冲突,减少锁表的几率。

Mysql分表技术是Mysql数据库中的关键技术,下文对Mysql分表的概念及使用作了详细的介绍,如果您对此感兴趣的话,不妨一看。

首先我们需要了解为什么要进行Mysql分表,Mysql分表的好处是什么。我们先来大概了解以下一个数据库执行SQL的过程:
接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果

当然,这个流程图不一定正确,这只是我自己主观意识上这么我认为。那么这个处理过程当中,最容易出现问题的是什么?就是说,如果前一个SQL没有执行完毕的话,后面的SQL是不会执行的,因为为了保证数据的完整性,必须对数据表文件进行锁定,包括共享锁和独享锁两种锁定。共享锁是在锁定的期间,其它线程也可以访问这个数据文件,但是不允许修改操作,相应的,独享锁就是整个文件就是归一个线程所有,其它线程无法访问这个数据文件。一般MySQL中最快的存储引擎MyISAM,它是基于表锁定的,就是说如果一锁定的话,那么整个数据文件外部都无法访问,必须等前一个操作完成后,才能接收下一个操作,那么在这个前一个操作没有执行完成,后一个操作等待在队列里无法执行的情况叫做阻塞,一般我们通俗意义上叫做“锁表”。

锁表直接导致的后果是什么?就是大量的SQL无法立即执行,必须等队列前面的SQL全部执行完毕才能继续执行。这个无法执行的SQL就会导致没有结果,或者延迟严重,影响用户体验。

特别是对于一些使用比较频繁的表,比如SNS系统中的用户信息表、论坛系统中的帖子表等等,都是访问量大很大的表,为了保证数据的快速提取返回给用户,必须使用一些处理方式来解决这个问题,这个就是我今天要聊到的分表技术。

Mysql分表技术顾名思义,就是把若干个存储相同类型数据的表分成几个表分表存储,在提取数据的时候,不同的用户访问不同的表,互不冲突,减少锁表的几率。比如,目前保存用户分表有两个表,一个是user_1表,还有一个是 user_2 表,两个表保存了不同的用户信息,user_1 保存了前10万的用户信息,user_2保存了后10万名用户的信息,现在如果同时查询用户 heiyeluren1 和 heiyeluren2 这个两个用户,那么就是Mysql分表从不同的表提取出来,减少锁表的可能。
 

 

 

 

【编辑推荐】

MySQL服务器的内部锁定

25条mysql和sql server区别

带您深入了解Mysql临时表

Mysql清空表的实现方法

查看Mysql表结构的命令

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-15 11:27:21

Mysql临时表

2010-09-26 14:57:05

SQL联合查询

2010-11-29 10:48:49

Sybase系统表

2010-11-22 14:05:53

MySQL单表大小

2010-10-14 11:41:03

mysql变量

2010-10-19 14:56:05

sql server临

2010-10-22 11:40:33

MySQL的特点

2010-10-09 14:00:10

mysql CONCA

2010-10-12 13:14:11

mysql索引类型

2010-10-27 15:58:01

Oracle临时表

2010-10-08 13:45:20

MYSQL中TIMES

2010-09-16 14:38:55

Sql server表

2010-08-26 09:33:18

DB2数据库

2010-10-11 16:45:18

MySQL ifnul

2010-10-14 11:25:39

2010-10-14 11:33:42

MySQL用户

2010-10-09 14:08:52

MYSQL Cast函

2010-11-19 15:53:28

oracle管理表空间

2010-09-30 10:53:39

DB2表管理

2010-11-22 11:09:00

MySQL索引类型
点赞
收藏

51CTO技术栈公众号