什么是MYSQL分区? [英] What is MYSQL Partitioning?

查看:109
本文介绍了什么是MYSQL分区?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经阅读了文档( http://dev.mysql. com/doc/refman/5.1/en/partitioning.html ),但是我想用你自己的话说它是什么以及为什么使用它.

I have read the documentation (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html), but I would like, in your own words, what it is and why it is used.

  1. 它主要用于多台服务器,因此不会拖拽一台服务器吗?
  2. 因此,部分数据将在server1上,而部分数据将在server2上.服务器3将指向"服务器1或服务器2 ...这是如何工作的?
  3. 为什么MYSQL文档集中在同一服务器内进行分区...如果目的是在服务器之间进行分区?

推荐答案

分区背后的想法不是使用多个服务器,而是使用多个表而不是一个表.您可以将一个表分为多个表,以便一个子表中可以有旧数据,而另一表中可以有新数据.然后,数据库可以优化查询,让您知道新数据在第二张表中,从而在其中查询新数据.而且,您可以定义如何对数据进行分区.

The idea behind partitioning isn't to use multiple servers but to use multiple tables instead of one table. You can divide a table into many tables so that you can have old data in one sub table and new data in another table. Then the database can optimize queries where you ask for new data knowing that they are in the second table. What's more, you define how the data is partitioned.

来自 MySQL文档的简单示例:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
    PARTITION p0 VALUES LESS THAN (1991),
    PARTITION p1 VALUES LESS THAN (1996),
    PARTITION p2 VALUES LESS THAN (2001),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

这可以加快速度,例如:

This allows to speed up e.g.:

  1. 通过简单的方法删除旧数据:

  1. Dropping old data by simple:

ALTER TABLE employees DROP PARTITION p0;

  • 数据库可以像这样加快查询速度:

  • Database can speed up a query like this:

    SELECT COUNT(*)
    FROM employees
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
    GROUP BY store_id;
    

  • 知道所有数据仅存储在p2分区上.

    Knowing that all data is stored only on the p2 partition.

    这篇关于什么是MYSQL分区?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆