MySql,Sql Server分区技术浅析
一.MySqlMySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水平(按照一定的逻辑)分成多张表,比如如果我们的User
一.MySql
MySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水平(按照一定的逻辑)分成多张表,比如如果我们的User表中有1000万条数据,那如果放在一张表里面去查询,绝对是坑爹的行为,更别提再去进行增删改。如果在加上索引,撑爆内存是难免的。所以才有了之后的分表技术,比如把用户名是a开头的用户放入一张表里面,这样可以减少该表的数据量 ,但是同样这个在应用层上也需要对系统进行优化,比如当我查询“abc”这个用户时,我知道他的信息在user1这个表里,然后与之对应的select语句就要发生相应的变化。当然进行水平分表时也不一定仅仅按照用户名的首字母来匹配对应相应的存储表,应根据信息得不同建立相应的逻辑对应关系。发现自己扯得有点远……。咱们回过头来说一下MySql5.1版本之后的的分区技术,不过还要提一下之前的分表技术,多大表进行拆分后,其相应的子表(暂且这么称呼)在逻辑上是变化的,这就体现在我们查询sql语句的不同上,那有没有一种技术可以在逻辑上保持原状,仅仅在物理结构上发生变化呐?这就是我们要提到的MySql的分区技术。对应用程序而言,他还是一张表,这样可以在逻辑层上屏蔽我们之前遇到的复杂查询语句。
MySql5.1上有5种分区类型,下面就让我们一个个的来瞅瞅看:
1)RANGE分区(经常使用):
基于属于一个给定连续区间的列值,把多个行分配给分区;
例:假定你创建了一个如下表,该表保存了20家音像店的职员记录,这20家音像店的编号从1到20,你想把不同时期离职的职员的信息分别存储,那么你可以将字段separated(即离职时间)作为一个Key,则sql语句如下:
推荐阅读
-
浅析SQL Server中包含事务的存储过程
-
VS2010/VS2013项目创建 ADO.NET连接mysql/sql server详细步骤
-
压缩技术给SQL Server备份文件瘦身
-
Navicat远程连接SQL Server并转换成MySQL步骤详解
-
数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
-
SQL Server根据分区表名查找所在的文件及文件组实现脚本
-
深入浅析SQL Server 触发器
-
浅析Sql server锁,独占锁,共享锁,更新锁,乐观锁,悲观锁
-
SQL Server关于predicate、density、selectivity、cardinality名词浅析
-
Sql Server分区表,清空单个分区的快捷方法