MySQL分表分庫(kù)技術(shù)是一種將數(shù)據(jù)分散存儲(chǔ)在多個(gè)數(shù)據(jù)庫(kù)表和數(shù)據(jù)庫(kù)實(shí)例中的分布式數(shù)據(jù)庫(kù)技術(shù)。分表分庫(kù)可以有效地提高數(shù)據(jù)庫(kù)的擴(kuò)展性和性能。
// 創(chuàng)建數(shù)據(jù)庫(kù)表 CREATE TABLE `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `age` INT(11) NOT NULL, `email` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8; // 創(chuàng)建兩個(gè)數(shù)據(jù)庫(kù)實(shí)例 CREATE DATABASE `mydb1` DEFAULT CHARSET=utf8; CREATE DATABASE `mydb2` DEFAULT CHARSET=utf8; // 同步數(shù)據(jù)到兩個(gè)數(shù)據(jù)庫(kù)實(shí)例中 INSERT INTO `mydb1`.`user` (`name`, `age`, `email`) VALUES ('Tom', 18, 'tom@example.com'); INSERT INTO `mydb2`.`user` (`name`, `age`, `email`) VALUES ('Jerry', 20, 'jerry@example.com'); // 查詢(xún)數(shù)據(jù)時(shí)需要同時(shí)查詢(xún)兩個(gè)數(shù)據(jù)庫(kù)實(shí)例 SELECT * FROM `mydb1`.`user` UNION SELECT * FROM `mydb2`.`user`;
分表分庫(kù)技術(shù)可以根據(jù)數(shù)據(jù)量或者數(shù)據(jù)類(lèi)型來(lái)劃分,例如按照用戶(hù)ID劃分到不同的表中,或者按照不同的業(yè)務(wù)數(shù)據(jù)類(lèi)型劃分到不同的數(shù)據(jù)庫(kù)實(shí)例中。
分表分庫(kù)技術(shù)的缺點(diǎn)是增加了數(shù)據(jù)的復(fù)雜度,需要開(kāi)發(fā)人員設(shè)計(jì)合適的分表分庫(kù)策略,并且需要進(jìn)行數(shù)據(jù)同步和查詢(xún)時(shí)的合并處理。