MySQL中ALTER LOGFILE GROUP 語句詳解

在 MySQL 的 InnoDB 存儲引擎中,ALTER LOGFILE GROUP?語句用于修改重做日志組(redo log group)的配置。重做日志是 InnoDB 用來保證事務持久性的一個關鍵組件,它們用于在系統崩潰后恢復數據。

InnoDB 支持多個重做日志組,每個組可以有多個重做日志文件。在大多數情況下,InnoDB 會自動管理這些日志文件,但在某些高級配置中,管理員可能需要手動干預。

ALTER LOGFILE GROUP?語句的基本語法如下:

ALTER LOGFILE GROUP logfile_groupADD UNDOFILE 'file_name'[INITIAL_SIZE [=] size][WAIT]ENGINE [=] engine_name

ALTER LOGFILE GROUP ... ADD UNDOFILE?語句實際上是針對 InnoDB 的撤銷表空間(undo tablespace)而不是重做日志組的。在 MySQL 8.0 及之后的版本中,InnoDB 引入了獨立的撤銷表空間來替代早期的系統表空間(system tablespace)中的撤銷段(undo segments)。

ALTER LOGFILE GROUP ... ADD UNDOFILE?語句允許您向現有的撤銷表空間組中添加一個新的撤銷文件(undo file)。但是,請注意,此語句是特定于撤銷表空間,而不是重做日志組。

注意:

NDB Cluster(Network DataBase Cluster)是 MySQL Cluster 的一部分,它是一個高度可用的、分布式的數據庫系統,旨在提供實時的、高吞吐量的數據訪問。在 NDB Cluster 中,Disk Data 對象(如表空間、撤銷日志文件、數據文件等)共享相同的命名空間,這意味著每個 Disk Data 對象都必須具有唯一的名稱。

具體來說,NDB Cluster 不允許具有相同名稱的不同類型的 Disk Data 對象存在。例如,您不能有一個名為 "my_data" 的表空間和另一個同樣名為 "my_data" 的撤銷日志文件,或者一個名為 "my_undo" 的撤銷日志文件和另一個名為 "my_undo" 的數據文件。這是為了確保在 NDB Cluster 內部可以準確地識別和引用每個 Disk Data 對象。

INITIAL_SIZE?參數是用于設置 InnoDB 撤銷表空間或撤銷日志文件(undo log file,在某些上下文中)的初始大小的。如果未指定此參數,則撤銷文件的初始大小默認為 134217728 字節(即 128 MB)。

在指定?INITIAL_SIZE?時,您可以在大小值后面跟隨一個單字母的縮寫來表示數量級,這與在?my.cnf(或?my.ini,取決于操作系統和 MySQL 版本)配置文件中使用的縮寫類似。常見的縮寫包括:

  • M:表示兆字節(megabytes)
  • G:表示吉字節(gigabytes)

在 32 位系統上,由于內存地址空間的限制,INITIAL_SIZE?參數的最大值通常是 4294967296 字節,即 4 GB(因為 2^32 字節等于 4 GB,但實際的可用空間可能會因系統和其他因素而有所減少)。

對于?INITIAL_SIZE?的最小值,官方文檔或相關 Bug 報告通常建議至少為 1048576 字節,即 1 MB。這是因為過小的初始大小可能會導致頻繁的文件擴展操作,這可能會影響性能。

注意:WAIT被解析,但在其他情況下被忽略。該關鍵字目前沒有任何效果,用于將來的擴展。

ENGINE?子句是在定義或修改 NDB Cluster 相關的表或表組時使用的,用于指定所使用的存儲引擎。在 NDB Cluster 中,ENGINE?子句是必需的,因為它決定了表或表組將使用哪種存儲引擎。

對于 NDB Cluster,目前接受的?engine_name?值只有“NDBCLUSTER”和“NDB”。這兩個值實際上是等效的,都表示使用 NDB Cluster 存儲引擎。盡管“NDB”是一個較舊的名稱,但在 MySQL NDB Cluster 中,這兩個名稱都仍然有效,并且通常都可以使用。

下面是一個示例,假設日志文件組lg_3已經使用CREATE LOGFILE group創建:

ALTER LOGFILE GROUP lg_3ADD UNDOFILE 'undo_10.dat'INITIAL_SIZE=32MENGINE=NDBCLUSTER;

當您使用?ALTER LOGFILE GROUP?語句并指定?ENGINE = NDBCLUSTER(或者等效的?ENGINE = NDB)時,您會在 NDB Cluster 的每個數據節點上創建一個撤銷日志文件(undo log file)。要驗證這些撤銷文件是否已創建并獲取有關它們的信息,您可以查詢 Information Schema 的?FILES?表。

以下是一個示例查詢,展示了如何檢查 NDB Cluster 中的撤銷日志文件:

mysql> SELECT FILE_NAME, LOGFILE_GROUP_NUMBER, EXTRA-> FROM INFORMATION_SCHEMA.FILES-> WHERE LOGFILE_GROUP_NAME = 'lg_3';
+-------------+----------------------+----------------+
| FILE_NAME   | LOGFILE_GROUP_NUMBER | EXTRA          |
+-------------+----------------------+----------------+
| newdata.dat |                    0 | CLUSTER_NODE=3 |
| newdata.dat |                    0 | CLUSTER_NODE=4 |
| undo_10.dat |                   11 | CLUSTER_NODE=3 |
| undo_10.dat |                   11 | CLUSTER_NODE=4 |
+-------------+----------------------+----------------+
4 rows in set (0.01 sec)

在 NDB Cluster 中,UNDO_BUFFER_SIZE?指定的內存是從全局內存池中分配的,這個全局內存池的大小由?SharedGlobalMemory?數據節點配置參數的值確定。此外,InitialLogFileGroup?數據節點配置參數的設置也可能為?UNDO_BUFFER_SIZE?隱式指定一個默認值。

其中:

  • UNDO_BUFFER_SIZE:指定了用于存儲撤銷日志條目(這些條目在事務被回滾或用于 MVCC 操作時可能需要)的內存大小。這個值通常根據系統的工作負載和性能需求來設置。

  • SharedGlobalMemory:定義了 NDB Cluster 中所有節點共享的全局內存池的大小。這個內存池用于存儲各種數據結構和緩存,包括撤銷日志緩沖區。增加這個值可能會提高性能,但也會增加內存使用。

  • InitialLogFileGroup:通常用于定義日志文件組的初始大小和配置。在某些 NDB Cluster 版本和配置中,這個參數的設置可能會隱式地影響?UNDO_BUFFER_SIZE?的默認值,盡管這不是一個直接的關聯。具體的行為取決于 NDB Cluster 的版本和配置。

當調整這些參數時,需要確保全局內存池的大小足夠大,以容納所有必要的內存需求,包括撤銷日志緩沖區、數據緩存、索引緩存等。如果全局內存池太小,可能會導致性能下降或系統不穩定。

實際上,ALTER LOGFILE GROUP?語句在 NDB Cluster 中主要與磁盤數據(Disk Data)存儲引擎相關,但需要注意的是,NDB Cluster 本身是一個內存數據庫集群,其主要數據存儲是在內存中完成的。然而,NDB Cluster 也支持將某些數據或日志存儲在磁盤上,以提高持久性和恢復能力。

在 NDB Cluster 中,當您使用磁盤數據表(Disk Data tables)時,這些表的數據實際上是在內存中處理的,但它們的某些部分(如數據和索引的鏡像)可以被配置為存儲在磁盤上。這些磁盤數據表使用了一種稱為?DiskData?的存儲引擎,而不是 NDB Cluster 的主內存存儲引擎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35438.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

周轉車配料揀貨方案

根據周轉車安裝的電子標簽,被懸掛的掃碼器掃到墨水屏顯示的二維碼,投屏發送配料揀貨的數據。 方便快捷分揀物料

20240625(周二)歐美股市總結:標普納指止步三日連跌,英偉達反彈6.8%,谷歌微軟新高,油價跌1%

美聯儲理事鮑曼鷹派發聲,若通脹沒有持續改善將支持加息,加拿大5月CPI重新加速,對加拿大央行7月降息構成阻礙。美股走勢分化,道指收跌近300點且六日里首跌,英偉達市值重上3.10萬億美元,芯片股指顯著反彈1.8%…

想要用tween實現相機的移動,three.js渲染的canvas畫布上相機位置一點沒動,如何解決??

🏆本文收錄于「Bug調優」專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&&…

linux 批量mv批量cp | 批量復制粘貼剪切

一、【問題描述】 cp 和 mv這種基本命令,多對一是可以做的 比如 cp /conf/* /despath mv /conf/* /path/bak/ 但是一對多會報錯,加-r參數也會報錯,而且會有問題,不建議這么做,找一臺測試機器你會發現加了-r甚至復制…

每日新聞掌握【2024年6月26日 星期三】

2024年6月26日 星期三 農歷五月廿一 大公司/大事件 OpenAI將終止對中國提供API服務 從6月24日晚間開始,已有多名用戶收到了來自OpenAI的郵件。該郵件表示,“我們的數據顯示您的組織來自OpenAI目前不支持的地區的API流量。”郵件進一步表示,…

高內聚低耦合【代碼:ShoppingCart(一個類中提供多種操作購物車的方法體現高內聚)支付方式接口(信用卡類、微信支付類實現支付接口 體現低耦合)】

高內聚低耦合 ?內聚指的是:?個模塊中各個元素之間的聯系的緊密程度,如果各個元素(語句、程序段)之間的聯系程度越?,則內聚性越?,即 “?內聚”。 低耦合指的是:軟件中各個層、模塊之間的依賴關聯程序越低越好。修…

第1章 物聯網模式簡介---獨特要求和體系結構原則

物聯網用例的獨特要求 物聯網用例往往在功耗、帶寬、分析等方面具有非常獨特的要求。此外,物聯網實施的固有復雜性(一端的現場設備在計算上受到挑戰,另一端的云容量幾乎無限)迫使架構師做出艱難的架構決策和實施選擇。可用實現技…

【自動調參】年化29.3%,最大回撤18.5%?:lightGBM的參數優化

原創文章第570篇,專注“AI量化投資、世界運行的規律、個人成長與財富自由"。 研報復現繼續:【研報復現】年化27.1%,人工智能多因子大類資產配置策略之benchmark 昨天調了一版參數,主要是lambda_l1, lambda_l2,防…

Vmvare12安裝CentOS7.6

Vmvare12安裝 注意事項 安裝完成以后有這兩個虛擬網卡。 CentOS官網鏡像地址 https://www.centos.org/download/mirrors/Vmvare安裝CentOS7.6 創建虛擬機 安裝CentOS7.6 選擇桌面版 磁盤分區 上述是確認使用自動分區。 設置密碼 設置license information 歡迎頁面 CentOS7…

使用Python實現網頁數據獲取與處理:以財經新聞為例

在現代數據驅動的世界中,獲取并處理豐富的網頁數據是非常重要的技能。本文將介紹如何使用Python編寫一個程序,自動獲取財經新聞數據并進行處理。這不僅可以幫助我們快速獲取最新的財經信息,還可以為后續的數據分析和研究提供支持。 環境準備…

寶蘭德受邀出席華為開發者大會2024,攜手共繪基礎軟件新篇章

6月21日-23日,華為開發者大會(HDC 2024)在東莞松山湖舉行,作為全球開發者的年度盛會,本次大會匯聚了眾多業界精英與前沿技術。華為分享了HarmonyOS、盤古大模型、昇騰AI云服務、GaussDB數據庫、自研倉頡編程語言等最新…

微信小程序錄音

微信小程序的錄音功能通過一組API來實現,主要涉及錄音管理器(RecorderManager)的使用。下面是詳細的實現步驟和代碼示例: 初始化錄音管理器 首先需要獲取錄音管理器的實例,可以通過 wx.getRecorderManager() 方法來獲…

【IM即時通信 功能介紹】客戶端用戶在線狀態訂閱

本文檔旨在介紹客戶端用戶在線狀態訂閱功能,該功能允許開發者通過 SDK 接口實時監控和接收指定用戶的在線或離線狀態變更通知。這一功能對于需要實時交流、狀態同步或用戶活動監控的應用場景至關重要。 功能特點 實時狀態通知 跨平臺通知:訂閱成功后&…

使用 MediaPipe 實現實時手部追蹤和手勢識別 | Rerun展示

點擊下方卡片,關注“小白玩轉Python”公眾號 在本文中,我將展示一個使用 MediaPipe Python 和 Rerun SDK 進行手部追蹤和手勢識別的示例。如果您有興趣深入了解并擴展您的知識,我將指導您如何安裝 MediaPipe Python 和 Rerun SDK 來進行手部追…

深入Scala的變量聲明與類型推斷:語法糖下的智能推導

Scala是一種靜態類型語言,以其強大的類型推斷系統而聞名。變量聲明和類型推斷是Scala編程中的基礎概念,它們共同簡化了代碼的編寫并提高了開發效率。本文將深入探討Scala中變量聲明的語法規則和類型推斷的工作原理。 1. Scala靜態類型的優越性 靜態類型…

深入理解Python中的*和**在函數參數與調用中的奧秘

深入理解Python中的*和**在函數參數與調用中的奧秘 在Python編程中,*和**這兩個操作符在函數參數和函數調用中扮演著特殊的角色。它們分別用于處理位置參數(positional arguments)和關鍵字參數(keyword arguments)&am…

Linux部署SVN

一.下載與安裝 (1)yum安裝 yum install subversion (2)源文件編譯安裝 ①下載svn源文件 subversion-xxx.tar.gz(subversion 源文件) subversion-deps-xxx.tar.gz(subversion依賴文件&…

RAG項目工期

工期 第一期,基于term的檢索,大模型生成 第二期,搭建前端界面,落地 上傳pdf,一鍵解析,上傳多個pdf 提問 第三期,使用向量檢索,向量數據庫選型 第四期,優化排序。 te…

BatchNorm和LayerNorm

參考鏈接 參考鏈接 參考鏈接

項目四 OpenStack身份管理

任務一 理解身份服務 1.1 ?Keystone的基本概念 ? 認證 ( Authentication ) —— 確認用戶身份的過程 ,又稱身份驗證 。 ? 憑證 ( Credentials ) —— 又 稱憑據,是用于 確認用戶身份的數據 。 ? 令牌…