簡體   English   中英

脫機同步(將性能UUID作為主鍵)

[英]Offline synchronization (Performance UUID as a primary key)

我正在開發一個項目,其中一些客戶有互聯網連接問題。

當互聯網連接不起作用時,我們將信息存儲在客戶端PC中的數據庫上。 當我們再次獲得連接時,我們將本地DB與中央DB進行同步。

為了避免兩個數據庫之間的記錄ID沖突,我們將使用UUID [char(36)]而不是自動增量。

數據庫是帶有InnoDB引擎的Mysql。

我的問題是,這會對選擇,連接等的性能產生影響嗎? 我們應該使用varbinary(16)而不是char(36)來提高性能嗎?

注意:我們已經擁有一個包含4 Go數據的現有數據庫我們也可以通過其他建議來解決此離線/在線問題。

謝謝

由於您沒有說明正在使用哪個數據庫引擎(MyISAM或InnoDB),因此很難說出性能影響的大小。

然而,要簡短地講述這個故事 - 是的,對於更大的數據集將會有性能影響。 原因是你需要36個字節用於主鍵索引,而4個(8個bigint)字節用於整數。

我會告訴你如何避免沖突:

首先是在數據庫上有不同的自動增量偏移量。 如果你有2個數據庫,你的自動增量在一個數據庫上是奇數,甚至在另一個數據庫上也是如此。

第二是擁有復合主鍵。 如果將主鍵定義為PRIMARY KEY(id, server_id)那么如果將數據復制到中央數據庫中,則不會發生任何沖突。 你也會知道它來自哪里。 缺點是您需要為每個查詢提供server_id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM