mysql 記憶體表同步 記憶體表在同步環境注意事項

2021-10-17 16:46:22 字數 621 閱讀 4714

在一些場景想利用mysql的記憶體表存一些資料來加快資料的操作。但如果在複製環境中這可不是乙個好事情。

主要原因如下:

1. 記憶體表在資料庫重啟或是異常down機的情況下記憶體表的資料會全部丟失。如果從庫重啟一下則同步就不能進行了。

2. 另一方面,在主從環境下,如果從庫上同時有大的操作或是排序工作,有借助於臨時表的的場景,同時主庫上記憶體表也有較大的寫入,從庫有可能會就出現報那個記憶體表is full (1114)這樣的錯誤。

3. 特別需要注意在使用記憶體表的場景主庫重啟會主動發起一次對記憶體表的truncate table操作

那如何解決呢:

1. 從我對資料庫的了解上來看推薦用innodb表去替代memory表, innodb表如果乙個表的資料經常被訪問,就會被載入到記憶體裡,資料和索引都在記憶體,訪問速度是比較快的。

2. 不要複製innodb表。 利用replication-igore-table=db.tbaname形式宣告不同步那個表。 這種情況下如果在statement級別的複製,禁止出現insert into otbname select c1 from tbname這種語句。

3.把監表單獨放到乙個例項下,和主要業務資料分開。

和朋友一起 共學習 共進步!

猜您喜歡

mysql記憶體表 MySQL的記憶體表

記憶體表 顧名思義建立在記憶體中的表,真是這樣嗎?其實不然,mysql的記憶體表,表結構建立在磁碟上,資料存放在記憶體中,所以當mysql啟動著的時候,這個表是存在的,資料也是存在的,如果使用者有檢視這個表的許可權,在所有會話裡面,都可以訪問這個記憶體表的資料 當mysql重啟後,資料消失,結構還存...

mysql記憶體表

如何建立記憶體表?建立記憶體表非常的簡單,只需註明 engine memory 即可 create table tablename columnname varchar 256 not nul engine memory default charset latin1 max rows 1000000...

mysql記憶體表 mysql建立記憶體表的方法

如何建立記憶體表?建立記憶體表非常的簡單,只需註明 engine memory 即可 複製 如下 create table tablename columnname varchar 256 not nul engine memory default charset latin1 max rows 1...