1. 程式人生 > 其它 >資料庫面試題--Mycat

資料庫面試題--Mycat

Mycat

1.Mycat是什麼?

Mycat是基於MySQL的資料庫中介軟體,目的是為了降低資料庫的壓力。

2.什麼叫混合切分

專案組中如果有水平切分,那專案組裡的開發方式就叫混合切分。或者專案組裡就是單純的垂直切分。

3.在專案組中,切分後的庫從哪裡而來?

在開發中是基於原有庫創建出來,並且原有庫和切分後的庫是資料表的設計是保持一致的。dm_order1,dm_order2,dm_order3這些庫是需要和dm_order的設計保持一致的!!!!

附註:所以,切分後的庫例如dm_order1,dm_order2,dm_order3這些都是有資料庫維護團隊創建出來的。

4.搭建mycat的核心配置檔案有哪些?

schem.xml 配置引數:邏輯庫,邏輯表,資料節點。節點主機

rule.xml:分片規則

server.xml:連線mycat的使用者資訊(賬號和密碼)

這裡是使用中介軟體做資料切分,感興趣的小夥伴還可以瞭解一下mysql的分庫分表高可用方案

5.mycat分庫可以分成100個庫嗎?

我們目前專案組分的是3個庫,我們說一般資料量大的話我們使用的是mycat中介軟體進行分片處理,如果更大的話,我們可以使用oracle資料庫,如果更大的話可以使用hadoop或是雲端儲存資料,不需要mycat作為工具手段。衡量的標準是專案有沒有對應的硬體裝置。 如果沒有,基本就是使用mysql 因為搭建一套雲環境或者大資料的環境基本都是超大型的公司。比如大資料中的所有的技術,例如hbase 或者是一大堆的伺服器 一大堆的網路路由裝置 或是私有云。或者是一大堆的資料庫運維實施人員都是成本

6.進行庫表拆分時,拆分規則怎麼取捨?

1.不存在熱點資料時,則使用連續分片

2.存在熱點資料時,使用離散分片或者是綜合分片

3.離散分片暫時遷移比較麻煩(但是mycat給出了資料遷移的指令碼,雖然現在還是不是很完美),綜合分片佔用總機器數量多

7.Mycat中全域性ID方案有哪些?程式自定義全域性ID的方案有哪些?

1.mycat的全域性id方案

(1)本地檔案方式
sequnceHandlerType = 0

配置sequence_conf.properties

使用next value for MYCATSEQ_XXX

(2)資料庫方式

sequnceHandlerType = 1

配置sequence_db_conf.properties

使用next value for MYCATSEQ_XXX或者指定autoIncrement

(3)本地時間戳方式

ID= 64 位二進位制 (42(毫秒)+5(機器 ID)+5(業務編碼)+12(重複累加)

sequnceHandlerType = 2

配置sequence_time_conf.properties

指定autoIncrement

\2. 程式方式

(1)Snowflake

(2)UUID

(3)Redis

8.Mycat的在分庫分表之後,它是怎麼支援聯表查詢的?

  • 使用好ER表
  • 善用全域性表
  • 在sql上添加註解
/*!mycat:catlet=io.mycat.catlets.ShareJoin */

9.配置檔案不會變多,配置的節點主機會變多?

不會

10.你們專案中分片的實現方式是什麼?

在rule.xml中配置PartitionByMod

線上刷題小程式

參考連結

https://www.cnblogs.com/zhaozhitong/p/12450130.html

https://zhuanlan.zhihu.com/p/281636679

https://blog.csdn.net/jiongsui7605/article/details/94410680

https://blog.csdn.net/weixin_30682415/article/details/94993907