MySQL分庫分表,一般只能按照一個維度進行查詢.以訂單表為例, 按照用戶ID mod 64 分成 64個數據庫.按照用戶的維度查詢很快,因為最終的查詢落在一台服務器上.但是如果按照商戶的維度查詢,則代價非常高.需要查詢全部64台服務器.在分頁的情況下,更加惡化.比如某個商戶查詢第10頁的數據 ...
目錄 前言 Elasticsearch構建二級索引 Elasticsearch存儲全部字段 MySQL與Elsaticsearch中數據的增刪改查如何保證事務 訂閱binlog 編程式事務 補償 使用消息隊列同步更改數據庫 弊端 前言 前幾天滴滴第三輪面試的時候, 遇到一道面試題, 大意是說現在給定一個訂單表, 是按照訂單ID來進行分庫分表的, 那么如果想要根據訂單的商戶ID來進行查詢某個商戶的 ...
2020-12-27 13:12 0 855 推薦指數:
MySQL分庫分表,一般只能按照一個維度進行查詢.以訂單表為例, 按照用戶ID mod 64 分成 64個數據庫.按照用戶的維度查詢很快,因為最終的查詢落在一台服務器上.但是如果按照商戶的維度查詢,則代價非常高.需要查詢全部64台服務器.在分頁的情況下,更加惡化.比如某個商戶查詢第10頁的數據 ...
1、面試題 現在有一個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上? 2、面試官心里分析 你看看,你現在已經明白為啥要分庫分表了,你也知道常用的分庫分表中間件了,你也設計好你們如何分庫分表的方案了(水平拆分、垂直拆分、分表 ...
1、面試題 你們有沒有做MySQL讀寫分離?如何實現mysql的讀寫分離?MySQL主從復制原理的是啥?如何解決mysql主從同步的延時問題? 2、面試官心里分析 這個,高並發這個階段,那肯定是需要做讀寫分離的,啥意思?因為實際上大部分的互聯網公司,一些網站,或者是 ...
一、兩種方案分庫分表 一般業界,對訂單數據的分庫分表,筆者了解,有兩類思路:按照訂單號來切分、按照用戶id來切分。 方案一、按照訂單號來做hash分散訂單數據 把訂單號看作是一個字符串,做hash,分散到多個服務器去。 具體到哪個庫、哪個表存儲數據 ...
1、面試題 為什么要分庫分表(設計高並發系統的時候,數據庫層面該如何設計)?用過哪些分庫分表中間件?不同的分庫分表中間件都有什么優點和缺點?你們具體是如何對數據庫如何進行垂直拆分或水平拆分的? 2、面試官心里分析 其實這塊肯定是扯到高並發了,因為分庫分表一定是為了支撐 ...
1、面試題 如何設計可以動態擴容縮容的分庫分表方案? 2、面試官心里分析 (1)選擇一個數據庫中間件,調研、學習、測試 (2)設計你的分庫分表的一個方案,你要分成多少個庫,每個庫分成多少個表,3個庫每個庫4個表 (3)基於選擇好的數據庫中間件,以及在測試環境建立 ...
分庫分表是高並發高可用系統的一個重要的點,互聯網公司面試常常會問道。 為什么要分庫分表(設計高並發系統的時候,數據庫層面應該如何設計)? 首先要清楚,分庫和分表是兩回事,是兩個獨立的概念。分庫和分表都是為了防止數據庫服務因為同一時間的訪問量(增刪查改)過大導致宕機而設計的一種應對 ...
1、面試題 分庫分表之后,id主鍵如何處理? 2、面試官心里分析 其實這是分庫分表之后你必然要面對的一個問題,就是id咋生成?因為要是分成多個表之后,每個表都是從1開始累加,那肯定不對啊,需要一個全局唯一的id來支持。所以這都是你實際生產環境中必須考慮的問題 ...