mysql的MEMORY引擎為什麼應用沒有redis的應用廣泛?

時間 2021-05-11 13:51:17

1樓:Abby Chau

我自己寫的論壇中的online 表就是用memory 引擎的。

作為kv 查詢是夠用了,但有乙個很嚴重的limit,就是表總容量很小。不像redis 和memcache 那樣可以一直新增。

同一時間我也有redis 去處理更加煩心的快取問題。

2樓:eechen

MySQL的記憶體表(memory引擎)還是有專案用的.

據我所見,論壇PunBB(FluxBB)裡的online表,

Discuz!裡的pre_common_session等一些表都使用了MySQL記憶體表.

MySQL記憶體表預設使用的是hash索引(跟Redis/Memcached一樣),

區別於InnoDB表預設的B+樹索引.

hash索引最大的優勢就是,等值查詢和更新速度都很快,但範圍查詢和排序就不給力了.

這很好理解,因為hash索引下的資料是無序的,而B+樹索引下的資料是有序,儲存在B+樹葉子節點裡的資料會被連起來組成一條有序鍊錶.

當然用MySQL記憶體表實現K/V儲存也是可以,設定3個字段,分別為鍵/值/時間,比如:

CREATE TABLE IF NOT EXISTS `memory` (

`key` varchar(40) NOT NULL,

`value` text NOT NULL,

`date` bigint(20) unsigned NOT NULL,

PRIMARY KEY (`key`) USING HASH

) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

INSERT INTO `memory` (`key`, `value`, `date`)

VALUES ('key1', 'value1', 20160906173140);

INSERT INTO `memory` (`key`, `value`, `date`)

VALUES ('key2', 'value2', 20160906173140);

其實memory記憶體表也是可以使用text相關型別的字段的.

Percona Server 5.6上實測.

3樓:Comzyh

感覺佔記憶體有點狠?

曾經我和 @楊政 做乙個資料分析的後端,為了速度快,把 2GB 的 SqlLite 裡的資料插到 MySQL MEMORY 引擎裡,好像佔了大概 8G 記憶體。

4樓:劉鑫

還是效能不夠高吧,我記得以前同事的測試結果是Innodb的33倍讀寫。比Redis還是差好多的。其實就算高三十幾倍,還是有用武之地。

現在確實是值得挖掘一下。替代Redis不現實,Redis我七八年前的測試資料,軟體秒響應極限就在一萬這個級別(同時代的 Nginx 在沒有魔改的情況下,大約三萬)。

5樓:zhuqz

從kv快取的作用看,mysql優點不在kv快取上,用它做kv快取維護成本高,redis安裝啟動使用簡單,mysql效率功能也沒redis強大,

redis專門針對一些場景做了優化,例如計數器,可以精確計數,精度要求不高也可以模糊計數,占用記憶體更少;集合間的各種操作更簡單高效,典型應用場景社交應用下好友,粉絲各種操作;

以 MySQL 為例,如何進行 SQL 注入和防止被注入?

魚有鹽 MySQL為例,現在專案大部分都用框架實現,比如MyBatis框架,輕量級,功能強大 在MyBatis中,如果寫 則為直接把傳入的值填充到SQL語句中 如果寫 則為傳入的值只能作為值,放到SQL語句中。舉例 DELETE FROM student WHERE name 如果這樣寫,假如使用者...

齊豫和周深的memory各有什麼特色與不同嗎?

shin 姐姐的是歷經滄桑風雨中歸來的美,周深的感覺更年輕,更透明,充滿希望,充滿渴望被接納被認可的令人顫慄的期待。個人觀感,外行,勿拍 人間惆悵客yz 跑個題得知齊豫老師要在歌手唱歡顏和memory的時候,我們生公尺就知道,要出事了 我們真的很早很早就在超話裡發帖告訴大家拒絕比較,拒絕ky,不要提...

如何計算mysql的IOPS

鄭軍 問1 計算方式從表面上看是對的,但是你是指單盤IOPS嗎?要知道資料庫使用塊狀儲存的話,還取決於 1 你做的RAID方式,2 你的儲存頭效能和背板的頻寬,3 你採用的儲存壓縮模式,4 你採用的CACHE的尺寸演算法等等,這些帶沒有合計伺服器對IO的處理能力,所有這些都可以成為最終處理能力的決定...