數據存儲redis
二、說說反模式設計:反範式,表數據冗餘數據庫
三、說說分庫與分表設計:用戶中心,用戶id維度分庫分表,經過mod用戶id或者hash等方式來實現數據路由緩存
四、分庫與分錶帶來的分佈式困境與應對之策:分佈式事務,採用分佈式事務系統|表關聯查詢,拆分跨表查詢腳本|..異步
五、說說 SQL 優化之道:explain,索引,冗餘分佈式
六、MySQL 遇到的死鎖問題性能
七、存儲引擎的 InnoDB 與 MyISAM:InnoDB支持事務--MyISAM不支持,InnoDB支持行級鎖,表鎖--MyISAM只支持表鎖優化
八、數據庫索引的原理:B+樹ui
九、爲何要用 B-tree線程
十、彙集索引與非彙集索引的區別:彙集索引的數據記錄物理順序一致,非彙集索引B+樹設計
十一、limit 20000 加載很慢怎麼解決:排序+ID限制範圍
十二、選擇合適的分佈式主鍵方案:db的,sequnce(tair),uuid。。。
1三、選擇合適的數據存儲方案:
1四、ObjectId 規則:
1五、聊聊 MongoDB 使用場景
1六、倒排索引:搜索的反向索引
1七、聊聊 ElasticSearch 使用場景
緩存使用
一、Redis 有哪些類型:set,zset,list,string,hash
二、Redis 內部結構:
三、聊聊 Redis 使用場景:高性能,緩存
四、Redis 持久化機制:aof(增量)/rdb(全量)
五、Redis 如何實現持久化:aof阻塞落盤/rdb進程異步落盤
六、Redis 集羣方案與實現:客戶端分片(jedis)/基於代理的分片(codis)/路由查詢(redis-cluster)
七、Redis 爲何是單線程的:緩存主要耗費的是IO,不是CPU,因此單線程已經知足要求
八、緩存奔潰
九、緩存降級
十、使用緩存的合理性問題
消息隊列
一、消息隊列的使用場景:異步化(註冊發郵件),削峯()
二、消息的重發補償解決思路:重試+冪等性
三、消息的冪等性解決思路:id記錄表
四、消息的堆積解決思路:定位堆積的緣由
五、本身如何實現消息隊列:
六、如何保證消息的有序性:在選擇broker的時候採用mod業務id的方式,讓同一個業務id數據路由到同一個broker(rocketmq)