日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库-优化-数据库结构的优化-拆分优化

發(fā)布時(shí)間:2024/4/13 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库-优化-数据库结构的优化-拆分优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)庫表的垂直拆分

1、垂直拆分定義

所謂的垂直拆分,就是把原來一個(gè)有很多列的表拆分成多個(gè)表,這解決了表的寬度問題。

2、垂直拆分原則

通常垂直拆分可以按以下原則進(jìn)行: 1、 把不常用的字段表單獨(dú)存放到一個(gè)表中。 2、 把大字段獨(dú)立存放到一個(gè)表中。 3、 把經(jīng)常一起使用的字段放到一起。 例子:以film表為例

在該表中,title和description這兩個(gè)字段占空間比較大,況且在使用頻率也比較低,因此可以將其提取出來,將上面的一個(gè)達(dá)標(biāo)垂直拆分為兩個(gè)表(film和film_ext):如下所示:

1、

2、

數(shù)據(jù)庫表的水平拆分

1、為什么水平拆分

表的水平拆分是為了解決單表數(shù)據(jù)量過大的問題,水平拆分的表每一個(gè)表的結(jié)構(gòu)都是完全一致的,以下面的peyment表為例來說明

show create table payment; CREATE TABLE `payment` (`payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,`customer_id` smallint(5) unsigned NOT NULL,`staff_id` tinyint(3) unsigned NOT NULL,`rental_id` int(11) DEFAULT NULL,`amount` decimal(5,2) NOT NULL,`payment_date` datetime NOT NULL,`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`payment_id`),KEY `idx_fk_staff_id` (`staff_id`),KEY `idx_fk_customer_id` (`customer_id`),KEY `fk_payment_rental` (`rental_id`),KEY `inx_paydate` (`payment_date`),CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE,CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE,CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8

2、水平不拆分原因

如果單表的數(shù)據(jù)量達(dá)到上億條,那么這時(shí)候我們盡管加了完美的索引,查詢效率低,寫入的效率也相應(yīng)的降低。

3、如何將數(shù)據(jù)平均分為N份

通常水平拆分的方法為: 1、 對(duì)customer_id進(jìn)行hash運(yùn)算,如果要拆分為5個(gè)表則使用mod(customer_id,5)取出0-4個(gè)值。 2、 針對(duì)不動(dòng)的hashid把數(shù)據(jù)存儲(chǔ)到不同的表中。

4、水平拆分面臨的挑戰(zhàn)

1、 夸分區(qū)表進(jìn)行數(shù)據(jù)查詢 前端業(yè)務(wù)統(tǒng)計(jì): 業(yè)務(wù)上給不同的用戶返回不同的業(yè)務(wù)信息,對(duì)分區(qū)表沒有大的挑戰(zhàn)。 2、 統(tǒng)計(jì)及后臺(tái)報(bào)表操作 但是對(duì)后臺(tái)進(jìn)行報(bào)表統(tǒng)計(jì)時(shí),數(shù)據(jù)量比較大,后臺(tái)統(tǒng)計(jì)時(shí)效性比較低,后臺(tái)就用匯總表,將前后臺(tái)的表拆分開。

?

?

總結(jié)

以上是生活随笔為你收集整理的数据库-优化-数据库结构的优化-拆分优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。