给个例子吧 具体点的 如何创建分区表 如何对分区表进行查询 如何对分区表进行操作

解决方案 »

  1.   

    这些知识看官方文档都有现成的,不是重点。重点是:不要用分区,坑太多。1)表莫名损坏,而且还没有任何错误提示
    2)drop 表很慢,分区数多的情况下,还会hang住实例,置换table cache
    3)  分区表DDL比不分区的要慢很多。
      

  2.   


    第18章:分区
     目录
    18.1. MySQL中的分区概述18.2. 分区类型18.2.1. RANGE分区18.2.2. LIST分区18.2.3. HASH分区18.2.4. KEY分区18.2.5. 子分区18.2.6. MySQL分区处理NULL值的方式18.3. 分区管理18.3.1. RANGE和LIST分区的管理18.3.2. HASH和KEY分区的管理18.3.3. 分区维护18.3.4. 获取关于分区的信息 
    本章讨论MySQL 5.1.中实现的分区。关于分区和分区概念的介绍可以在18.1节,“MySQL中的分区概述”中找到。MySQL 5.1 支持哪几种类型的分区,在18.2节,“分区类型” 中讨论。关于子分区在18.2.5节,“子分区” 中讨论。现有分区表中分区的增加、删除和修改的方法在18.3节,“分区管理” 中介绍。 和分区表一同使用的表维护命令在18.3.3节,“分区维护” 中介绍。 请注意:MySQL 5.1中的分区实现仍然很新(pre-alpha品质),此时还不是可生产的(not production-ready)。 同样,许多也适用于本章:在这里描述的一些功能还没有实际上实现(分区维护和重新分区命令),其他的可能还没有完全如所描述的那样实现(例如, 用于分区的数据目录(DATA DIRECTORY)和索引目录(INDEX DIRECTORY)选项受到Bug #13520) 不利的影响).  我们已经设法在本章中标出这些差异。在提出缺陷报告前,我们鼓励参考下面的一些资源:•
    MySQL 分区论坛 这是一个为对MySQL分区技术感兴趣或用MySQL分区技术做试验提供的官方讨论论坛。来自MySQL 的开发者和其他的人,会在上面发表和更新有关的材料。它由分区开发和文献团队的成员负责监控。 •
    分区缺陷报告  已经归档在缺陷系统中的、所有分区缺陷的一个列表,而无论这些缺陷的年限、严重性或当前的状态如何。根据许多规则可以对这些缺陷进行筛选,或者可以从MySQL缺陷系统主页开始,然后查找你特别感兴趣的缺陷。•
    Mikael Ronström's Blog  MySQL分区体系结构和领先的开发者Mikael Ronström 经常在这里贴关于他研究MySQL 分区和MySQL簇的文章。 •
    PlanetMySQL 一个MySQL 新闻网站,它以汇集MySQL相关的网誌为特点,那些使用我的MySQL的人应该对此有兴趣。我们鼓励查看那些研究MySQL分区的人的网誌链接,或者把你自己的网誌加到这些新闻报道中。
    MySQL 5.1的二进制版本目前还不可用;但是,可以从BitKeeper知识库中获得源码。要激活分区,需要使用--with-分区选项编译服务器。关于建立MySQL 的更多信息,请参见2.8节,“使用源码分发版安装MySQL”。如果在编译一个激活分区的MySQL 5.1创建中碰到问题,可以在MySQL分区论坛中查找解决办法,如果在论坛中已经贴出的文章中没有找到问题的解决办法,可以在上面寻找帮助。18.1. MySQL中的分区概述
     
    本节提供了关于MySQL 5.1.分区在概念上的概述。 SQL标准在数据存储的物理方面没有提供太多的指南。SQL语言的使用独立于它所使用的任何数据结构或图表、表、行或列下的介质。但是,大部分高级数据库管理系统已经开发了一些根据文件系统、硬件或者这两者来确定将要用于存储特定数据块物理位置的方法。在MySQL中,InnoDB存储引擎长期支持表空间的概念,并且MySQL服务器甚至在分区引入之前,就能配置为存储不同的数据库使用不同的物理路径(关于如何配置的解释,请参见7.6.1节,“使用符号链接”)。 分区又把这个概念推进了一步,它允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。函数根据用户指定的分区类型来选择,把用户提供的表达式的值作为参数。该表达式可以是一个整数列值,或一个作用在一个或多个列值上并返回一个整数的函数。这个表达式的值传递给分区函数,分区函数返回一个表示那个特定记录应该保存在哪个分区的序号。这个函数不能是常数,也不能是任意数。它不能包含任何查询,但是实际上可以使用MySQL 中任何可用的SQL表达式,只要该表达式返回一个小于MAXVALUE(最大可能的正整数)的正数值。分区函数的例子可以在本章后面关于分区类型的讨论中找到 (请参见18.2节,“分区类型” ),也可在13.1.5节,“CREATE TABLE语法”的分区语法描述中找到。 当二进制码变成可用时(也就是说,5.1  -max 二进制码将通过--with-partition 建立),分区支持就将包含在MySQL 5.1的-max 版本中。如果MySQL二进制码是使用分区支持建立的,那么激活它不需要任何其他的东西 (例如,在my.cnf 文件中,不需要特殊的条目)。可以通过使用SHOW VARIABLES命令来确定MySQL是否支持分区,例如:
    mysql> SHOW VARIABLES LIKE '%partition%';
     
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | have_partition_engine | YES   |
    +-----------------------+-------+
    1 row in set (0.00 sec)在如上列出的一个正确的SHOW VARIABLES 命令所产生的输出中,如果没有看到变量have_partition_engine的值为YES,那么MySQL的版本就不支持分区。(注意:在显示任何有关分区支持信息的命令SHOW ENGINES的输出中,不会给出任何信息;必须使用SHOW VARIABLES命令来做出这个判断)。对于创建了分区的表,可以使用你的MySQL 服务器所支持的任何存储引擎;MySQL 分区引擎在一个单独的层中运行,并且可以和任何这样的层进行相互作用。在MySQL 5.1版中,同一个分区表的所有分区必须使用同一个存储引擎;例如,不能对一个分区使用MyISAM,而对另一个使用InnoDB。但是,这并不妨碍在同一个 MySQL 服务器中,甚至在同一个数据库中,对于不同的分区表使用不同的存储引擎。 要为某个分区表配置一个专门的存储引擎,必须且只能使用[STORAGE] ENGINE 选项,这如同为非分区表配置存储引擎一样。但是,必须记住[STORAGE] ENGINE(和其他的表选项)必须列在用在CREATE TABLE语句中的其他任何分区选项之前。下面的例子给出了怎样创建一个通过HASH分成6个分区、使用InnoDB存储引擎的表:
    CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
        ENGINE=INNODB
        PARTITION BY HASH(MONTH(tr_date))
        PARTITIONS 6;(注释:每个PARTITION 子句可以包含一个 [STORAGE] ENGINE 选项,但是在MySQL 5.1版本中,这没有作用)。 创建分区的临时表也是可能的;但是,这种表的生命周期只有当前MySQL  的会话的时间那么长。对于非分区的临时表,这也是一样的。 注释:分区适用于一个表的所有数据和索引;不能只对
      

  3.   

    我现在还不清楚这个是怎么来使用的,我想知道这个分区到底的怎么来用的
    mysql中怎么来对分区表进行简单查询、进行复杂查询,进行创建、可以给我个简单点的例子吗?网上看的太多没有看明白
      

  4.   

    建表:
    CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
        ENGINE=INNODB
        PARTITION BY HASH(MONTH(tr_date))
        PARTITIONS 6;查询:
    select * from ti;复杂查询
    select * from ti where id in(1,2,3);
      

  5.   

    招聘:岗位职责:
    1、负责在生产环境中DB变更脚本发布;
    2、负责支持开发团队的日常信息查询和数据迁移;
    3、负责DB生产环境日常状态的巡检;
    4、在资深dba的指导下完成DB运维工作;
    5、在资深dba的指导下完成DB自动化运维平台的脚本编码工作.
    6、在资深dba指导下完成资源管理、监控和备份管理工作。职位要求:
    1、1-2年数据库运维经验,熟悉mysql数据库体系结构与性能优化,有100台以上规模数据库运维经验更佳 
    2、熟悉关系数据库原理与设计,有大型项目的数据库设计和支持经验优先,熟悉利用SSD提高数据库io性能优先,熟悉大数据量下分库分表设计方法优先。 
    3、熟练使用各种数据结构,能指导开发来共同解决问题 
    5、熟悉linux操作系统的使用
    6、熟悉shell/perl/python等脚本语言中的一种,善于利用脚本解决重复问题。
    7、基础扎实,做事认真,善于总结,有想法,能承受压力
    8、性格沉稳细致或者灵活有原则