Mysql
為什麼在 MySQL 8.0.22 中不推薦使用 Innodb Memcached 外掛?
我最初使用“handlersocket”外掛進行 NoSQL 訪問 InnoDB 表,然後它最終無法在較新的版本上建構,所以我遷移到 Oracle 推出的“Memcached”外掛,似乎是一個很好的長期替代品.
現在外掛文件中有一條通知“InnoDB memcached plugin is deprecated as of MySQL 8.0.22”。
有誰知道為什麼,其次,這是否意味著它不會再被烘焙但仍然可以在需要時編譯,或者外掛的開發已經停止?如果是後者,對於跳過查詢優化器成本的表的套接字訪問是否有更新/不同的選項?我不明白為什麼會如此毫不客氣地放棄增加如此多效率和靈活性的東西:(
memcached 外掛從未跳過 InnoDB 的成本。它是一個 API,而不是儲存引擎。您發佈到 memcached 外掛的數據仍然受事務影響,仍然寫入 InnoDB 的重做日誌,仍然記憶體在緩衝池中,等等。您甚至可以通過 SQL 訪問同一個表。memcached 外掛的唯一優點是它跳過了 SQL 解析,並且因為除了主鍵之外您無法進行連接或搜尋,因此避免了許多複雜的優化選擇。
我還沒有看到描述他們棄用這個外掛的原因的文章。但是以下任何一個原因都是好的:
- **這是不安全的。**預設情況下,memcached API 沒有身份驗證,這就是它在 memcached 外掛中使用的方式。這是一個安全漏洞,如果啟用了 memcached 外掛,文件會阻止使用者在 MySQL 實例中儲存“敏感數據”。
對於數據庫供應商來說,這是一個非常有力的聲明!如果汽車的製造商說,“呃,你可能不應該讓你的家人乘坐這輛車”,你會怎麼看。
- **這很令人困惑。**memcached API 是否提供對 memcached 實例的訪問?不。memcached 類似工作,即記憶體數據儲存?不,它和 memcached 一樣快嗎?不。
- **XDevAPI 提供 NoSQL 數據訪問。**這是一個功能更全面、更安全的 MySQL API,它支持像面向文件的數據庫這樣的數據。毫無疑問,MySQL 的產品經理寧願開發人員使用它,這樣他們就可以有一個更好的解決方案來解決對 MySQL 伺服器中數據的非 SQL 訪問。
- **它不夠受歡迎。**您使用了 memcached 外掛,但沒有多少其他開發人員這樣做。如果他們想使用memcached,實際使用真正的memcached服務並不難,它具有查詢介面簡單的優點,而且比MySQL中的memcached外掛快2-3倍。