mysql中怎么实现range分区

47次阅读
没有评论

共计 2304 个字符,预计需要花费 6 分钟才能阅读完成。

本篇文章为大家展示了 mysql 中怎么实现 range 分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一,如何启动 mysqld?
 
        本人把 mysql 安装在环境下,安装的主目录 homedir 是 c:\Program Files
\MySQL\MySQL Server 5.1\,启动方法非常简单:首先进入 cmd 命令行窗口,如下图:
 
     
          执行如下命令:cd  c:\Program Files\MySQL\MySQL Server 5.1\,进入 mysql 安装目录,
可以看到 bin 目录,该目录是存放 mysql 的各种可执行文件,cd bin,进入该目录,
 
找到 mysqld.exe 的可执行文件,执行 mysqld,即启动 mysqld,如下图:
  www.2cto.com  
       
  此时,打开任务管理器 –》进程,可以看到 mysqld.exe,表示启动成功。
 
         
 
二,如何关闭 mysqld?
 
        运行 cmd,将路径切换到:c:\Program Files\MySQL\MySQL Server 5.1\bin 下,用命令  
        mysqladmin -u root -p shutdown
 
        如下图所示:
 
     
 
三,innodb_file_per_table 设置
 
        mysql innodb 存储引擎对表空间的管理在默认情况下是使用共享表空间,
即所有表的索引和数据均放在一个以 ibdata1 的文件中,我们可以执行下面的命令查看:
 
     
        可以看到对应的 Value:OFF,下面我们在配置文件 my.ini 增加下面一行:
 
        #tenfy: 新添加的参数
        innodb_file_per_table=1
  www.2cto.com  
        然后,重新启动 mysqld,此时,可以看到:
 
 
          那么,你也许会问,之前在 innodb_file_per_table= 0 的时候已经创建的表,
此时还是继续使用共享表空间吗?是的,如果我们不对表进行修改,之前的可以继续使用,但
 
          将共享表空间修改成独立表空间,除了修改 innodb_file_per_table 参数外,
我们需要修改所有 innodb 的表都运行如下:
 
         alter table table_name engine=innodb;(tenfy:注意红色部分必须添加,
否则无法生效),一旦执行完成后,我们可以在 data 的 mytest1 目录下,看到根据各个分区
生成的各个.ibd 后缀的文件,这些文件就是独立表空间文件,每个分区对应一个。
(关于分区我们将在下面讲解)
 

 
四,mysql 分区概述
 
        分区功能并不是在存储引擎层完成的,因此除了 innodb 支持分区外,MyISAM,NDB
等均支持分区功能,而 CSV,FEDERATED,MERGE 则不支持分区功能。而 MySQL 在 5.1 版本时
添加了对分区功能的支持。
 
      分区是将一个表或者索引物分解成多个更小的,更可管理的部分,而对用户访问 db 的应用来说,
从逻辑上看,只有一个表或者一个索引(这里跟分库分表的访问不一样),但在物理上这个表或者
索引可能是由许多个物理分区组成的,每个分区都是一个独立的对象,可以进行独立处理。
  www.2cto.com  
      那么怎么判断当前是否启用了分区功能呢?可以执行如下命令进行查看:
 

 
      或者:
     
 
        当前 MySQL 支持以下几种分区:
 
       1,RANGE 分区:顾名思义,区间分区,行数据基于一个给定连续区间的列值放入分区。
 
       2,LIST 分区:列表分区,与 RANGE 分区类似,只是 LIST 分区面向的是离散可列举的值。
 
       3,HASH 分区:根据用户自定义的表达式的返回值来进行分区,返回值不能是负数。
 
       4,KEY 分区:根据 MySQL 数据库提供的哈希函数进行分区。
 
        但是不论什么类型的分区,必须注意以下两个问题:
 
      1,如果表中存在 primary key 或者 unique key 时,分区的列必须是 primary key 或者
unique key 的一个组成部分,也就是说,分区函数的列只能从 pk 或者 uk 这些 key 中取子集。 www.2cto.com  
 
        如下:
     
 
      表 par_tb1 有唯一 key,他们对应的列是 col1,col2。而此时进行分区的列却是 col3,
因此出现 1503 错误,此时我们把 col3 加入到 unique key 或者用 col1 或者 col2 进行分区均
 
      没问题:

     
      2,如果表中不存在任何的 primary key 或者 unique key,则可以指定任何一个列作为分区列。
 
五,RANGE 分区。
 
        RANGE 分区是最常用的一种分区类型,它的特点主要是按照某个列连续的值进行分区,
因此在分区中常常使用 values less than (xxx),下面我们以具体的例子来说明。
 
        首先我们创建一个表,名字叫:range_par_tbl,有一个 int 类型的 id 字段,当 id 小于 10 的
时候,插入第一个分区,当 id 小于 20 的时候插入第二分区。如下:
       
        此时,我们查看对应的分区表空间文件(注意:因为我们之前设置了 innodb_file_per_table=1),
此时启用分区后,表已经由建立分区时的各个分区 ibd 文件组成了,由于我们分了两个区,
因此可以看到对应的两个文件: www.2cto.com  

上述内容就是 mysql 中怎么实现 range 分区,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计2304字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)