不只是外來鍵。
Mysql裡有很多東西都不適用在網際網路的場景下。
包括但不限於:
1。檢視
2。外來鍵
3。儲存過程
4。事務
5。觸發器
還有被限制的:
1。聯表查詢
2。Select *
3。Group By
4。其他一些DB的函式
很多時候,要想簡單,快速,好擴充套件的解決問題,必須要有剋制。
select id from tables where field =? order by field limit 1,10;
這種語句幾乎是我們對DB的唯一期望。
1。單表查詢
2。Java中拼接和處理資料
3。儘量多用快取,防止請求穿透DB
常常考慮DB設計的幾個原則就是:
1。表的資料量會有多大?
2。併發請求會有多少?
3。更新的頻率會是什麼樣?
4。如果分庫的話,怎麼處理?
所以DB通常被弱化為持久化,持久化的意思就是資料要落地,不至於丟。
而快取才是網站扛併發量的利器。
如果覺得得Mysql的索引還是太慢,對於快取的使用又太麻煩。
那麼就是ElasticSearch+MongoDB
ES替代DB的索引,做搜尋。
MongoDB做Key-Value儲存。
這種比較麻煩一點的就是索引要提前規劃好。否則重建索引的時間挺長的。
不只是外來鍵。
Mysql裡有很多東西都不適用在網際網路的場景下。
包括但不限於:
1。檢視
2。外來鍵
3。儲存過程
4。事務
5。觸發器
還有被限制的:
1。聯表查詢
2。Select *
3。Group By
4。其他一些DB的函式
很多時候,要想簡單,快速,好擴充套件的解決問題,必須要有剋制。
select id from tables where field =? order by field limit 1,10;
這種語句幾乎是我們對DB的唯一期望。
1。單表查詢
2。Java中拼接和處理資料
3。儘量多用快取,防止請求穿透DB
常常考慮DB設計的幾個原則就是:
1。表的資料量會有多大?
2。併發請求會有多少?
3。更新的頻率會是什麼樣?
4。如果分庫的話,怎麼處理?
所以DB通常被弱化為持久化,持久化的意思就是資料要落地,不至於丟。
而快取才是網站扛併發量的利器。
如果覺得得Mysql的索引還是太慢,對於快取的使用又太麻煩。
那麼就是ElasticSearch+MongoDB
ES替代DB的索引,做搜尋。
MongoDB做Key-Value儲存。
這種比較麻煩一點的就是索引要提前規劃好。否則重建索引的時間挺長的。