1、單表數據達到多少的時候會影響數據庫的查詢性能?爲什麼?
答:一般mysql達到100w,就影響數據庫的查詢性能,如果命中索引,情況還好一點。
2、 主從複製機制的原理概述是怎樣的?常見的存在形式有哪些?
答:mysql主從複製是master將所有的事務操作寫入到binlog,slave獲取binlog讀入自己的中繼區,然後再進行執行。
3、 分庫分表中解釋一下垂直和水平2種不同的拆分?
答:
- 垂直拆分:是將單表,或者是有關聯的表放在一個數據庫,把原有的一個數據庫拆分成若干個數據庫。
- 水平拆分:是將一個很大的表,通過取模,按照日期範圍等等拆分成若干個小表
4、 分庫分表中垂直分庫方案會帶來哪些問題?
答:單表的數據量還是會很大。
5、分佈式數據存儲中間件如mycat的核心流程是什麼?
答:sql解析 ->數據源分配 -> 請求響應 -> 結果整合
6、 概述一下mycat?
答:分佈式關係型數據庫解決方案
7、 解釋一下全局表,ER表,分片表?
答:
- 全局表:一個字典類數據的表,每個表都有可能用到,在各個數據節點上都會冗餘。
- 分片表:按照一定的規則後,表按照設置的primaryKey來分配到不同的數據節點上。
- ER表:和分片表有外鍵關係的表,也是通過設置的primaryKey即與分片表的外鍵,和分片表按照一樣的規則分配到不同的數據節點上。
8、 Mycat的在分庫分表之後,它是怎麼支持聯表查詢的?
- 使用好ER表
- 善用全局表
- 在sql上添加註解
/*!mycat:catlet=io.mycat.catlets.ShareJoin */
9、 進行庫表拆分時,拆分規則怎麼取捨?
- 不存在熱點數據時,則使用連續分片
- 存在熱點數據時,使用離散分片或者是綜合分片
- 離散分片暫時遷移比較麻煩(但是mycat給出了數據遷移的腳本,雖然現在還是不是很完美),綜合分片佔用總機器數量多
10、 Mycat中全局ID方案有哪些?程序自定義全局ID的方案有哪些?
一、mycat的全局id方案
本地文件方式 sequnceHandlerType = 0
配置sequence_conf.properties
使用next value for MYCATSEQ_XXX
數據庫方式
sequnceHandlerType = 1
配置sequence_db_conf.properties
使用next value for MYCATSEQ_XXX或者指定autoIncrement
本地時間戳方式
ID= 64 位二進制 (42(毫秒)+5(機器 ID)+5(業務編碼)+12(重複累加)
sequnceHandlerType = 2
配置sequence_time_conf.properties
指定autoIncrement
二、 程序方式
Snowflake
UUID
Redis
11、 簡述一下一致性hash的原理?這樣設計的好處是什麼?
答:
做數據遷移時,不像離散分片那樣,全部數據都會動,一致性hash的話,就只需要動一小部分數據。
12、 4層負載和7層負載誰性能更高?爲什麼?這2者區別是什麼?
答:4層的高一點,是基於TCP的,7層是應用層,是基於應用協議,比如HTTP/FTP/SMTP
13、 講一講高可用方案