Rumah > pangkalan data > tutorial mysql > Mysql empat kaedah pembahagian dan cara melaksanakan pembahagian gabungan

Mysql empat kaedah pembahagian dan cara melaksanakan pembahagian gabungan

WBOY
Lepaskan: 2023-05-26 17:55:29
ke hadapan
1854 orang telah melayarinya

1. Soalan

1. Apakah pembahagian

Pembahagian: Ia adalah untuk menyimpan data jadual dalam blok

Tujuan: untuk meningkatkan kecekapan pertanyaan bagi indeks

2. Mengapakah Mysql menggunakan pembahagian

Mulakan dengan analisis data

dan kemudian lakukan pengoptimuman indeks

dan kemudian memperkenalkan pembahagian

3. Pembahagian dalam Prinsip Mysql

Pelanggan---------> Bandingkan Id dan kekunci partition------------->Cari partition ditentukan------ ---->Sama seperti pertanyaan pangkalan data

4. Had partition dalam Mysql

Anda mesti menggunakan medan partition, jika tidak pertanyaan partition akan gagal. Berjalan di semua zon.

Pada masa ini Julat ialah partition julat, tetapi kadangkala kita akan mengetahuinya. Saiz partition sentiasa statik.

Jadi akan ada saiz jadual partition yang tidak sekata. Bagaimana untuk mengimbangi saiz jadual partition?

2. Pelaksanaan pembahagian

1. Pembahagian julat

Syarat

  • Jadual Pembahagian Produk

Langkah-langkah

1. . Jika anda perlu membahagikan nilai medan.

mesti terkandung dalam medan kunci utama.

3.Key Partition

Langkah

1 Mula-mula buat Product-Partiton-Key

CREATE TABLE `product-Partiton-Range` (
	`Id` BIGINT(8) NOT NULL,
	`ProductName` CHAR(245) NOT NULL DEFAULT '1',
	`ProductId` CHAR(255) NOT NULL DEFAULT '1',
	`ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
	`ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
	PRIMARY KEY (`Id`),
	INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE (Id) PARTITIONS 3 (
PARTITION part0 VALUES LESS THAN (12980), 
PARTITION part1 VALUES LESS THAN (25960), 
PARTITION part2 VALUES LESS THAN MAXVALUE);
Salin selepas log masuk

Separti di atas mempunyai satu ciri: semua partition mesti Bersebelahan. dan pembahagian saiz bersebelahan.

Mari kita lihat senario lain: cara membahagikan pesanan produk.

4. Bagaimana untuk melaksanakan pembahagian Senarai dalam Mysql

Langkah

1 Mula-mula buat Product-Partiton-List

select * from product-Partiton-Range where Id = 25000
Salin selepas log masuk

kunci utama produk dan nama produk. untuk pembahagian.

5. Bagaimana untuk menggabungkan partition dalam Mysql

Langkah

CREATE TABLE `product-Partiton-Hash` (
    `Id` BIGINT(8) NOT NULL,
    `ProductName` CHAR(245) NOT NULL DEFAULT '1',
    `ProductId` CHAR(255) NOT NULL DEFAULT '1',
    `ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
    `ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
    PRIMARY KEY (`Id`),
    INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY HASH (Id) PARTITIONS 3;
Salin selepas log masuk

3 Cara menguruskan partition dalam Mysql

1

2. Bina semula partition

2.1 Julat partition bina semula

CREATE TABLE `product-Partiton-Key` (
	`Id` BIGINT(8) NOT NULL,
	`ProductName` CHAR(245) NOT NULL DEFAULT '1',
	`ProductId` CHAR(255) NOT NULL DEFAULT '1',
	`ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
	`ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
	PRIMARY KEY (`Id`),
	INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY KEY (ProductName) PARTITIONS 3;

#建立复合主键
CREATE TABLE `product-Partiton-Key` (
	`Id` BIGINT(8) NOT NULL,
	`ProductName` CHAR(245) NOT NULL DEFAULT '1',
	`ProductId` CHAR(255) NOT NULL DEFAULT '1',
	`ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
	`ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
	PRIMARY KEY (`Id`),
	INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY KEY (ProductName) PARTITIONS 3;
Salin selepas log masuk

2.2 SENARAI partition bina semula

CREATE TABLE `product-Partiton-List` (
    `Id` BIGINT(8) NOT NULL,
    `ProductName` CHAR(245) NOT NULL DEFAULT '1',
    `ProductId` CHAR(255) NOT NULL DEFAULT '1',
    `ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
    `ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
    `ProductStatus` int NOT NULL DEFAULT 0,
    PRIMARY KEY (`Id`),
    INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY LIST(ProductId) (
    PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (2,7,8)
);
Salin selepas log masuk

2.3 HASH/KEY partition bina semula

rree

3. Partition Baharu

3.1 Tambah partition RANGE

CREATE TABLE `product-Partiton-flex` (
    `Id` BIGINT(8) NOT NULL,
    `ProductName` CHAR(245) NOT NULL DEFAULT '1',
    `ProductId` CHAR(255) NOT NULL DEFAULT '1',
    `ProductDescription` CHAR(255) NOT NULL DEFAULT '1',
    `ProductUrl` CHAR(255) NOT NULL DEFAULT '1',
    PRIMARY KEY (`Id`,`ProductName`),
    INDEX `ProductId` (`ProductId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE (Id) PARTITIONS 3
SUBPARTITION BY KEY(ProductName)
  SUBPARTITIONS 2 (
    PARTITION p0 VALUES LESS THAN (12980),
    PARTITION p1 VALUES LESS THAN (25960),
    PARTITION p2 VALUES LESS THAN MAXVALUE
);
Salin selepas log masuk

3.2 Tambah partition HASH/KEY
ALERT TABLE users DROP PARTITION p0; 
#删除分区 p0
Salin selepas log masuk
3.3 Tambah partition pada jadual sedia ada
rreee
4 .Partition lalai sekatan ialah medan partition mestilah sebahagian daripada kunci utama (KUNCI UTAMA Untuk mengalih keluar sekatan ini
[Kaedah 1] Gunakan ID:

ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES LESS THAN (6000000));  
#将原来的 p0,p1 分区合并起来,放到新的 p0 分区中。
Salin selepas log masuk

[Kaedah 2] Alih keluar PK asal). dan menjana PK yang baharu
ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES IN(0,1,4,5,8,9,12,13));
#将原来的 p0,p1 分区合并起来,放到新的 p0 分区中。
Salin selepas log masuk

Atas ialah kandungan terperinci Mysql empat kaedah pembahagian dan cara melaksanakan pembahagian gabungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan