没有合适的资源?快使用搜索试试~ 我知道了~
数据库分表处理设计思想和实现
需积分: 20 16 下载量 44 浏览量
2009-12-04
11:27:32
上传
评论
收藏 37KB DOC 举报
温馨提示
试读
5页
分表是个目前算是比较炒的比较流行的概念,特别是在大负载的情况下,分表是一个良好分散数据库压力的好方法。 首先要了解为什么要分表,分表的好处是什么。我们先来大概了解以下一个数据库执行SQL的过程: 接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果 当然,这个流程图不一定正确,这只是我自己主观意识上这么我认为。那么这个处理过程当中,最容易出现问题的是什么?就是说,如果前一个SQL没有执行完毕的话,后面的SQL是不会执行的,因为为了保证数据的完整性,必须对数据表文件进行锁定,包括共享锁和独享锁两种锁定。共享锁是在锁定的期间,其它线程也可以访问这个数据文件,但是不允许修改操作,相应的,独享锁就是整个文件就是归一个线程所有,其它线程无法访问这个数据文件。一般MySQL中最快的存储引擎MyISAM,它是基于表锁定的,就是说如果一锁定的话,那么整个数据文件外部都无法访问,必须等前一个操作完成后,才能接收下一个操作,那么在这个前一个操作没有执行完成,后一个操作等待在队列里无法执行的情况叫做阻塞,一般我们通俗意义上叫做“锁表”。
资源推荐
资源详情
资源评论
数据库分表处理设计思想和实现
一、概述
分表是个目前算是比较炒的比较流行的概念,特别是在大负载的情况下,分表是一个良好
分散数据库压力的好方法。
首先要了解为什么要分表,分表的好处是什么。我们先来大概了解以下一个数据库执行
的过程:
接收到 放入 执行队列 使用分析器分解 按照分析结果进行数据
的提取或者修改 返回处理结果
当然,这个流程图不一定正确,这只是我自己主观意识上这么我认为。那么这个处理过程
当中,最容易出现问题的是什么?就是说,如果前一个 没有执行完毕的话,后面的
是不会执行的,因为为了保证数据的完整性,必须对数据表文件进行锁定,包括共享
锁和独享锁两种锁定。共享锁是在锁定的期间,其它线程也可以访问这个数据文件,但是
不允许修改操作,相应的,独享锁就是整个文件就是归一个线程所有,其它线程无法访问
这个数据文件。一般 中最快的存储引擎 ,它是基于表锁定的,就是说如
果一锁定的话,那么整个数据文件外部都无法访问,必须等前一个操作完成后,才能接收
下一个操作,那么在这个前一个操作没有执行完成,后一个操作等待在队列里无法执行的
情况叫做阻塞,一般我们通俗意义上叫做“锁表”。
锁表直接导致的后果是什么?就是大量的 无法立即执行,必须等队列前面的 全
部执行完毕才能继续执行。这个无法执行的 就会导致没有结果,或者延迟严重,影响
用户体验。
特别是对于一些使用比较频繁的表,比如 系统中的用户信息表、论坛系统中的帖子表
等等,都是访问量大很大的表,为了保证数据的快速提取返回给用户,必须使用一些处理
方式来解决这个问题,这个就是我今天要聊到的分表技术。
分表技术顾名思义,就是把若干个存储相同类型数据的表分成几个表分表存储,在提取数
据的时候,不同的用户访问不同的表,互不冲突,减少锁表的几率。比如,目前保存用户
分表有两个表,一个是 表,还有一个是 表,两个表保存了不同的用户信
息,保存了前 万的用户信息, 保存了后 万名用户的信息,现在如果
同时查询用户 和 这个两个用户,那么就是分表从不同的表提
取出来,减少锁表的可能。
我下面要讲述的两种分表方法我自己都没有实验过,不保证准确能用,只是提供一个设计
思路。下面关于分表的例子我假设是在一个贴吧系统的基础上来进行处理和构建的。(如
果没有用过贴吧的用户赶紧 一下)
资源评论
技术方舟
- 粉丝: 99
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功