【架構 | MySQL】最新MyCAT面試題彙總

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、 講一講高可用方案

在這裏插入圖片描述

發佈了156 篇原創文章 · 獲贊 28 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章