`
like.eagle
  • 浏览: 253182 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL数据分区中的KEY分区实践

阅读更多

对于RANGE和LIST分区,从网上的一些例子中了解到,可以为每个分区指定相应的数据库服务器,如下所示:

drop database if exists myspider;
create database myspider;
use myspider;
Create table tbl_b(
col_a int,
col_b int,
primary key(col_a)
) engine = Spider
Connection ' table "tbl_a", user "msandbox", password "msandbox" '
partition by range ( col_a ) (
partition pt1 values less than (1000)  comment 'host "rdb1", port "3306"',
partition pt2 values less than (2000)  comment 'host "rdb2", port "3306"',
partition pt3 values less than (MAXVALUE)  comment 'host "rdb3", port "3306"'
);

 

但是对于KEY和HASH分区,似乎并没有这样为每个分区指定数据库服务器的实例,大多的例子如下所示:

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
)
PARTITION BY HASH (id)
PARTITIONS 4;

 

或者

 

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
)
PARTITION BY KEY (id)
PARTITIONS 4;

 

而且在MySQL四大分区类型中(RANGE、LIST、HASH、KEY),分区键必须是INT类型,或者通过表达式返回INT类型,可以为NULL。唯 一的例外是当分区类型为KEY分区的时候,可以使用其他类型的列作为分区键( BLOB or TEXT 列除外)。

 

因此,今天特意实践了一下KEY分区,需求如下:

①KEY分区的分区类型不是 INT类型;

②为每个分区指定对应的数据库服务器;

 

结果成功,创建满足该需求的代码如下:

DROP TABLE IF EXISTS tkc;
CREATE TABLE tkc (cr CHAR)
ENGINE=SPIDER DEFAULT CHARSET=latin1 CONNECTION=' table "tkc", user "msandbox", password "msandbox" '
PARTITION BY KEY (cr)
PARTITIONS 3
(PARTITION pt1  COMMENT = 'host "127.0.0.1", port "6001"' ENGINE = SPIDER,
 PARTITION pt2 COMMENT = 'host "127.0.0.1", port "6002"' ENGINE = SPIDER,
 PARTITION pt3 COMMENT = 'host "127.0.0.1", port "6003"' ENGINE = SPIDER);

 

或者这样也可以

DROP TABLE IF EXISTS tkc;

CREATE TABLE `tkc` (
  `cr` CHAR(1) DEFAULT NULL
) ENGINE=SPIDER DEFAULT CHARSET=latin1 CONNECTION=' table "tkc", user "msandbox", password "msandbox" '
PARTITION BY KEY (cr)
(PARTITION pt1 COMMENT = 'host "127.0.0.1", port "6001"' ENGINE = SPIDER,
 PARTITION pt2 COMMENT = 'host "127.0.0.1", port "6002"' ENGINE = SPIDER,
 PARTITION pt3 COMMENT = 'host "127.0.0.1", port "6003"' ENGINE = SPIDER)

 

 

分享到:
评论

相关推荐

    MySQL分区分表方案实践手册

    ### MySQL分区分表方案实践手册知识点详述 #### 一、MySQL分区简介 数据库分区是一项重要的物理数据库设计技术,主要用于优化数据库性能并简化数据管理。MySQL的分区主要包括两种形式:水平分区和垂直分区。 - **...

    mysql实现自动创建与删除分区

    首先,我们需要理解MySQL分区的概念。分区是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。对于时间序列数据,如日志记录,根据日期或时间进行分区可以显著提高查询速度,因为查询通常针对特定时间...

    创建mysql表分区的方法

    4. **KEY分区**:类似于HASH分区,但使用MySQL计算的列值哈希。适用于内部优化,如InnoDB。 **创建分区表的步骤** 1. **创建表结构**:首先创建普通表,定义主键和其他列。 2. **定义分区**:使用`PARTITION BY`...

    MySQL 5.5.8 分区表性能测试

    压缩包中的“count.xls”文件可能是测试结果的记录,可能包含了在不同场景下对MySQL 5.5.8分区表性能的具体测试数据,例如查询时间、CPU使用率、内存消耗等指标。通过分析这些数据,我们可以深入了解分区表在实际...

    MYSQL 通过分区(Partition)提升MySQL性能

    - **水平分区(Horizontal Partitioning)**:根据行数据进行划分,将不同的行分配到不同的分区中。例如,可以通过某一列值的范围来决定行数据属于哪个分区。 - **垂直分区(Vertical Partitioning)**:按照列来...

    mysql分区文档

    MySQL 分区是数据库管理系统中的一种优化策略,它将大型表的数据分布在不同的物理存储上,以提高查询性能和便于管理大量数据。分区的本质是将一张大表逻辑上分成多个部分,但用户在操作时仍然将其视为单个表。MySQL ...

    MySQL的表分区详解

    - **查询优化**:满足特定WHERE条件的数据只存在于一个或几个分区中,查询时仅需扫描这些分区,提高了查询速度。 - **并行处理**:涉及聚合函数(如SUM和COUNT)的查询可以并行执行,加快计算速度。 - **负载均衡**...

    Oracle10个分区和Mysql分区区别详解

    - Oracle 的 Hash 分区将数据均匀分布在指定数量的分区中,根据分区列的哈希值决定数据存储位置。这种方式适用于数据分布均匀且无法用其他方式分区的情况,可以提高查询性能。 - MySQL 同样提供 Hash 分区,但 ...

    详细介绍Mysql5.1分区技术

    详细介绍mysql5.1 分区技术,通过对list range hash key四种分区技术的举例阐述Mysql分区,18.2.1. RANGE分区 18.2.2. LIST分区 ...18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式

    MySQL分区表:万字详解与实践指南

    **MySQL分区表**是一种通过将表中的数据划分成多个独立的物理部分(即分区)来改善数据库性能的方法。尽管从逻辑上看这些分区仍构成一个整体表,但实际上它们可以在不同的物理位置上存储,从而实现更高效的管理和...

    mysql分区.pdf

    4. KEY分区:与HASH分区类似,但KEY分区使用的是MySQL内部的哈希函数来分区数据。 5. MyISAM分区:在MySQL 5.1之前的版本中,MyISAM存储引擎支持分区,但只支持RANGE分区,且分区的索引是全局的。MyISAM分区在创建...

    mysql-存储分区-实验八.docx

    Hash和Key分区中,NULL通常被视为0。 - 交换分区是分区管理的重要操作,有助于数据的迁移和维护。 6. **教师评阅**: 教师可能对实验的完成度、理解和应用进行了评估,强调理论知识与实践操作相结合的重要性。 ...

    MySQL分区表的最佳实践指南

    MySQL分区表是一种优化大型数据库性能的技术,它将大表逻辑上划分为更小、更易管理的部分,以提高查询速度和数据管理效率。本文将深入探讨MySQL分区表的最佳实践,包括分区的目的、类型、操作示例以及适用场景。 1....

    mysql-分区

    - **Hash和Key分区**:增加Hash或Key分区可能较慢,尤其是数据量大时。 - **Coalesce分区**:减少分区数量对大型表而言是高效的,但不适用于Hash或Key分区。 6. **最佳实践**: - 选择合适的分区策略,考虑查询...

    mysql分库分表分区1

    在示例中,`employees` 表被按照 `store_id` 列的值范围进行分区,如 `PARTITION p0 VALUES LESS THAN (6)`,这意味着所有 `store_id` 小于 6 的记录都将存储在 p0 分区中。这种分区方式适合那些可以根据某一列的...

    mysql如何进行分区-mysql分区有哪些方法.docx

    4. **KEY 分区**:与 HASH 分区相似,但使用 MySQL 自己的哈希函数,适用于整数列。 下面是一些分区创建的例子: 1. **RANGE 分区示例**: ```sql CREATE TABLE t_range ( id INT(11), money INT(11) UNSIGNED ...

    mysql如何进行分区-mysql分区有哪些方法.pdf

    4. **KEY 分区**:这是 MySQL 自动计算的哈希分区,适用于列值为整数的情况。与 HASH 分区类似,但用户无需指定表达式。 在创建分区时,有几点需要注意: - 主键设计:分区字段不应为 NULL,且最好将其包含在主键...

    (mysql面试题)MySQL中的分区表的概念及其作用及代码展示.txt

    3. **数据分布均衡**:通过合理设置分区策略,可以使数据在不同的分区中分布得更加均匀,避免出现数据“热点”现象,从而提高系统的整体性能。 #### 三、分区类型 MySQL支持多种类型的分区,包括但不限于: - **...

Global site tag (gtag.js) - Google Analytics