分布式數(shù)據(jù)庫有哪些 什么意思?云架構(gòu)數(shù)據(jù)庫的動態(tài)擴容?
什么意思?云架構(gòu)數(shù)據(jù)庫的動態(tài)擴容?回滾是刪除由一個或多個部分完成的事務(wù)執(zhí)行的更新。為保證應(yīng)用程序、數(shù)據(jù)庫或系統(tǒng)錯誤后還原數(shù)據(jù)庫的完整性,需要使用回滾。阿里云的自定義鏡像是針對有效運行云服務(wù)器的用戶,通
什么意思?云架構(gòu)數(shù)據(jù)庫的動態(tài)擴容?
回滾是刪除由一個或多個部分完成的事務(wù)執(zhí)行的更新。為保證應(yīng)用程序、數(shù)據(jù)庫或系統(tǒng)錯誤后還原數(shù)據(jù)庫的完整性,需要使用回滾。
阿里云的自定義鏡像是針對有效運行云服務(wù)器的用戶,通過已創(chuàng)建的自定義鏡像,幫助您一次性開通多臺已完全拷貝相同操作系統(tǒng)及環(huán)境數(shù)據(jù)等的云服務(wù)器,以便滿足您彈性擴容的業(yè)務(wù)需求。
而快照是對某一當(dāng)前時刻的系統(tǒng)盤或數(shù)據(jù)盤中的系統(tǒng)或數(shù)據(jù),進行完全拷貝,以便在用戶數(shù)據(jù)錯誤或丟失狀態(tài)下,進行數(shù)據(jù)回滾到最近一次快照的數(shù)據(jù)狀態(tài)。
當(dāng)數(shù)據(jù)庫扼住系統(tǒng)性能咽喉,直接分庫分表能解決嗎?
分庫分表是比較靠后的優(yōu)化手段,因為成本比較高。
遇到數(shù)據(jù)庫瓶頸:
- 首先考慮sql優(yōu)化,這是最簡單的方法。對現(xiàn)有系統(tǒng)基本沒有影響。
- 其次就是考慮數(shù)據(jù)庫的讀寫分離,這也是相對簡單的方法。在數(shù)據(jù)庫層面進行配置,系統(tǒng)層面只需要調(diào)整一下獲取數(shù)據(jù)庫連接的邏輯。讀數(shù)據(jù)時即可以獲取主庫連接,也可以獲取從庫連接。寫數(shù)據(jù)時只獲取主庫連接。
- 再考慮增加緩存層。將數(shù)據(jù)緩存到緩存中,當(dāng)再次訪問時不再從數(shù)據(jù)庫獲取。一般緩存層對系統(tǒng)是透明的,基本對系統(tǒng)本身沒有影響。但是引入緩存,也引入了相應(yīng)的需要考慮的問題,比如雪崩,命中率,分布式緩存等
- 還有一種非技術(shù)手段,就是改需求。引起性能問題的原因是否是需求不合理?或者需求太復(fù)雜?是否可以簡化需求?此方法對系統(tǒng)的影響也相對較小。
- 最后才考慮分庫分表。優(yōu)先分庫,因為相對分表更簡單。將對應(yīng)的表移動到新庫,調(diào)整系統(tǒng)獲取數(shù)據(jù)庫連接的邏輯。這里需要考慮要移動哪些表,在提高性能的前提下,首先盡量避免分布式事務(wù)。
- 最最后,考慮分表。分表的主要原因是單表數(shù)據(jù)量太大。分表又分縱切和橫切??v切就是按列切,比如用戶表,常用信息為基本信息表,其它信息為詳情表。橫切就是按行切,比如一億數(shù)據(jù)量的表切分為十張一千萬的表。這里就涉及數(shù)據(jù)該存放到哪張表,或從哪張表里取。分表后又可以分庫,來進一步優(yōu)化。
- 如果涉及到分布式事務(wù),又要考慮如何保證分布式事務(wù)。理論方面2pc,3pc,paxos,cap,base。對應(yīng)的中間件的使用。
對系統(tǒng)的設(shè)計和優(yōu)化不是人云亦云,需要根據(jù)實際的場景來進行處理。
支撐日活百萬用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計其數(shù)據(jù)庫架構(gòu)? ?
以mysql為列:
1:支撐高并發(fā)系統(tǒng),一定會涉及事務(wù),所以數(shù)據(jù)庫引擎必選innodb,innodb支持事務(wù),事務(wù)級別根據(jù)業(yè)務(wù)而定,如果業(yè)務(wù)數(shù)據(jù)一致性要求很高,事務(wù)就開啟序列化級別,這樣就完全隔離事務(wù),但是會導(dǎo)致鎖資源競爭加劇。mysql的性能有一定的降低。
2:讀寫分離,數(shù)據(jù)庫分成主庫和從庫,主庫負(fù)責(zé)寫數(shù)據(jù),叢庫負(fù)責(zé)讀數(shù)據(jù)。注意主從數(shù)據(jù)庫數(shù)據(jù)一致性問題。
3:冷熱數(shù)據(jù)分離,美團,餓了么部分設(shè)計采用冷熱數(shù)據(jù)分離,拿訂單來說,已送達訂單,主要的業(yè)務(wù)場景就是查詢,越往前的數(shù)據(jù)查詢的概率就越低。這就是冷數(shù)據(jù)。正在交易的訂單就是熱數(shù)據(jù),需要時時查詢和更新。對于冷數(shù)據(jù),可以放到redis緩存。這樣會增加查詢效率。
4:數(shù)據(jù)表設(shè)計,充分利用索引查詢。業(yè)務(wù)sql避免返回?zé)o用的行和列,禁止使用select *查詢,查詢的時候加limit,盡可能返回滿足要求的行。對于復(fù)雜的sql,考慮拆分sql,拆分sql有一個好處,重復(fù)查詢的sql,第二次查詢會放到mysql的緩沖區(qū),避免重復(fù)操作磁盤,提高訪問的性能。
5:分庫分表。比如業(yè)務(wù)數(shù)據(jù)按月分等。一定程度緩解增刪改查的壓力。
希望對你有一定的幫助。謝謝。
女兒要去華為工作,數(shù)據(jù)庫、大數(shù)據(jù)、分布式存儲三個部門選一,哪一個發(fā)展前景比較好?
看來博主你家人才輩出啊 這種問題就不用問了 這么優(yōu)秀的兒女 想去哪都行