http://www.jyygyx.com/db/水平擴(kuò)大與垂直擴(kuò)大
在http://www.jyygyx.com/Internet/利用中,http://www.jyygyx.com/db/常常是我們存儲和訪問數(shù)據(jù)的經(jīng)常使用介質(zhì)。隨著負(fù)載的增大,對http://www.jyygyx.com/db/讀寫性能的要求常常成為很大的挑戰(zhàn)。在這類情況下我們可以斟酌http://www.jyygyx.com/db/相干的replication機(jī)制提高讀寫的性能。由于1般采取1寫多讀的replication機(jī)制(寫master同步到多個slaves),致使這樣的機(jī)制常常會有缺點。首先它依賴于讀寫的比例,如果寫的操作過量,致使master常常成為性能的瓶頸所在,從而使得slaves的數(shù)據(jù)同步延遲也變大,進(jìn)而大大消耗CPU的資源,并且致使數(shù)據(jù)的不1致從而影響到用戶的體驗。
這個時候我們就要斟酌使用http://www.jyygyx.com/db/的sharding(分片)機(jī)制,這里面我們所說sharding機(jī)制其實不是1個http://www.jyygyx.com/db/軟件的附屬功能,而是1種相對簡樸的軟件理念。1般我們把sharding機(jī)制分成水平擴(kuò)大(橫向擴(kuò)大,或向外擴(kuò)大)和垂直擴(kuò)大兩種方式。具體甚么是http://www.jyygyx.com/db/的水平擴(kuò)大和垂直擴(kuò)大呢?我們以下面的例子來講明。
比如我們現(xiàn)在有兩個表:用戶信息表 產(chǎn)品定單表
水平的拆分的方案,即不修改http://www.jyygyx.com/db/表結(jié)構(gòu),通過對表中數(shù)據(jù)的拆分而到達(dá)分片的目的:
1)使用用戶id做hash,分解http://www.jyygyx.com/db/,在訪問http://www.jyygyx.com/db/的使用用戶id做路由。
2)將產(chǎn)品定單表依照已下單和未下單辨別成兩個表。
1般水平拆分在查詢http://www.jyygyx.com/db/的時候可能會用到union操作。
垂直拆分的方案:將表和表分離,或修改表結(jié)構(gòu),依照訪問的差異將某些列拆分出去。
1)將用戶信息表放到1個http://www.jyygyx.com/db/server,將產(chǎn)品定單表放到1個http://www.jyygyx.com/db/server。
2)將用戶信息表中主碼(1般是user id)和1些經(jīng)常使用的信息放到1個表,將主碼和不經(jīng)常使用的信息放到另外的表,這致使1般查詢數(shù)據(jù)的時候可能會用到j(luò)oin操作。
在http://www.jyygyx.com/db/的設(shè)計中,我們更關(guān)注http://www.jyygyx.com/db/的水平擴(kuò)大的能力。
上一篇 Jscript 隨記