国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
了解是什麼使Alter操作阻塞
使用特定於數(shù)據(jù)庫的在線DDL功能
在MySQL(5.6帶有InnoDB):
在Postgresql中:
使用第三方工具進(jìn)行複雜的更改
pt-online-schema-change(mysql示例):
計(jì)劃圍繞應(yīng)用行為
首頁 資料庫 mysql教程 如何在不鎖定的情況下更改大桌子(在線DDL)?

如何在不鎖定的情況下更改大桌子(在線DDL)?

Jun 14, 2025 am 12:36 AM
mysql 在線DDL

要更改沒有長鎖的大型生產(chǎn)桌,請使用在線DDL技術(shù)。 1)確定您的Alter操作是快速(例如,添加/刪除列,修改null/Not Null)還是慢速(例如,更改數(shù)據(jù)類型,重新排序列,在大數(shù)據(jù)上添加索引)。 2)使用特定於數(shù)據(jù)庫的功能:在MySQL中,應(yīng)用算法= Inplace和lock = none;在PostgreSQL中,將創(chuàng)建索引同時(shí)發(fā)生用於非阻滯索引創(chuàng)建。 3)對於不受支持的更改,使用第三方工具,例如PT-Online-Schema-Change,它可以創(chuàng)建一個(gè)陰影表,在塊中復(fù)制數(shù)據(jù),並以最小的鎖定鎖定表。 4)確保足夠的磁盤空間,進(jìn)行分期測試,並避免複製或觸發(fā)器發(fā)生衝突。 5)通過在低流量,監(jiān)視性能和使用功能標(biāo)誌的情況下安排圍繞應(yīng)用程序行為進(jìn)行計(jì)劃,以順利處理模式過渡。

如何在不鎖定的情況下更改大桌子(在線DDL)?

當(dāng)您需要更改生產(chǎn)數(shù)據(jù)庫中的大表格時(shí),您想要的最後一件事是延長它。鎖定塊讀取和寫入,這會(huì)導(dǎo)致停機(jī)時(shí)間或性能問題。解決方案?在線DDL - 進(jìn)行更改而不鎖定桌子長時(shí)間。這是您可以有效地做到這一點(diǎn)的方法。


了解是什麼使Alter操作阻塞

並非所有ALTER TABLE操作都是相等的。有些是快速的元數(shù)據(jù)更改,而另一些則需要重建整個(gè)桌子。

  • 快速操作(非阻滯或最小阻塞)包括:
    • 在最後添加/刪除列
    • 修改列null/not null
    • 重命名列或索引
  • 緩慢操作(通常阻止)包括:
    • 更改列數(shù)據(jù)類型
    • 重新排序列
    • 在大型數(shù)據(jù)集上添加索引

如果您的操作屬於緩慢的類別,則需要使用允許您在線應(yīng)用模式更改的工具或技術(shù)。


使用特定於數(shù)據(jù)庫的在線DDL功能

現(xiàn)代數(shù)據(jù)庫對在線DDL具有內(nèi)置支持,尤其是在使用MySQL或PostgreSQL時(shí)。

在MySQL(5.6帶有InnoDB):

使用ALGORITHM=INPLACELOCK=NONE可能:

 Alter表用戶添加列New_col Varchar(255),
算法= Inploph,lock = none;
  • 檢查您的特定更改是否支持這些選項(xiàng)。
  • 如果不支持ALGORITHM=INPLACE ,則需要第三方工具。

在Postgresql中:

默認(rèn)情況下,大多數(shù)ALTER TABLE命令已經(jīng)是非阻滯的,但是可以同時(shí)完成索引:

在用戶上同時(shí)創(chuàng)建索引IDX_USERS_EMAIL(電子郵件);

這樣可以避免在創(chuàng)建索引期間鎖定桌子。


使用第三方工具進(jìn)行複雜的更改

如果本機(jī)支持還不夠,則具有自定義策略的PT-Online-inline-Schema-Schema-Schema-Schema-change (用於MySQL)或Liquibase / Flyway可以提供幫助。

pt-online-schema-change(mysql示例):

 pt-online-schema-change-alter“添加列active boolean” d = mydb,t =用戶-Execute

它的工作原理:

  • 創(chuàng)建表的陰影副本
  • 應(yīng)用對副本的更改
  • 在塊中復(fù)制數(shù)據(jù)
  • 準(zhǔn)備就緒時(shí)交換錶
  • 避免長鎖並保持可用性

確保:

  • 您有足夠的磁盤空間
  • 觸發(fā)器或複制不會(huì)引起問題
  • 您首先進(jìn)行測試

計(jì)劃圍繞應(yīng)用行為

即使使用在線DDL,也有邊緣案例:

  • 長期交易可能與模式變化相抵觸
  • 重複滯後可能在大型改變時(shí)發(fā)生
  • 應(yīng)用程序代碼應(yīng)暫時(shí)容忍舊模式

一些提示:

  • 如果可能的話,在交通低廉的時(shí)間內(nèi)安排更改
  • 在更改期間監(jiān)視複製和查詢性能
  • 考慮功能標(biāo)誌或版本的API,以順利處理模式過渡

基本上就是這樣。更改大桌子而不鎖定它們的情況下,可以使用正確的工具來理解數(shù)據(jù)庫的功能,並圍繞實(shí)際應(yīng)用程序行為進(jìn)行計(jì)劃。這不是魔術(shù),只需仔細(xì)執(zhí)行即可。

以上是如何在不鎖定的情況下更改大桌子(在線DDL)?的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

MySQL Master故障轉(zhuǎn)移的典型過程是什麼? MySQL Master故障轉(zhuǎn)移的典型過程是什麼? Jun 19, 2025 am 01:06 AM

MySQL主庫故障切換主要包括四個(gè)步驟。 1.故障檢測:通過監(jiān)控系統(tǒng)定期檢查主庫進(jìn)程、連接狀態(tài)及執(zhí)行簡單查詢判斷是否宕機(jī),設(shè)置重試機(jī)制避免誤判,並可藉助MHA、Orchestrator或Keepalived等工具輔助檢測;2.選擇新主庫:根據(jù)數(shù)據(jù)同步進(jìn)度(Seconds_Behind_Master)、binlog數(shù)據(jù)完整性、網(wǎng)絡(luò)延遲與負(fù)載情況選取最合適從庫接替,必要時(shí)進(jìn)行數(shù)據(jù)補(bǔ)償或人工干預(yù);3.切換拓?fù)洌簩⑵渌麖膸熘赶蛐轮鲙?,?zhí)行RESETMASTER或啟用GTID,更新VIP、DNS或代理配置以

如何使用命令行連接到MySQL數(shù)據(jù)庫? 如何使用命令行連接到MySQL數(shù)據(jù)庫? Jun 19, 2025 am 01:05 AM

連接MySQL數(shù)據(jù)庫的步驟如下:1.使用基本命令格式mysql-u用戶名-p-h主機(jī)地址進(jìn)行連接,輸入用戶名和密碼後即可登錄;2.若需直接進(jìn)入指定數(shù)據(jù)庫,可在命令後加上數(shù)據(jù)庫名,如mysql-uroot-pmyproject;3.若端口非默認(rèn)3306,需添加-P參數(shù)指定端口號(hào),如mysql-uroot-p-h192.168.1.100-P3307;此外,遇到密碼錯(cuò)誤可重新輸入,連接失敗需檢查網(wǎng)絡(luò)、防火牆或權(quán)限設(shè)置,若缺少客戶端可在Linux上通過包管理器安裝mysql-client。掌握這些命令

為什麼索引可以提高M(jìn)ySQL查詢速度? 為什麼索引可以提高M(jìn)ySQL查詢速度? Jun 19, 2025 am 01:05 AM

IndexesinMySQLimprovequeryspeedbyenablingfasterdataretrieval.1.Theyreducedatascanned,allowingMySQLtoquicklylocaterelevantrowsinWHEREorORDERBYclauses,especiallyimportantforlargeorfrequentlyqueriedtables.2.Theyspeedupjoinsandsorting,makingJOINoperation

MySQL中的交易隔離級(jí)別是多少?默認(rèn)值是哪個(gè)? MySQL中的交易隔離級(jí)別是多少?默認(rèn)值是哪個(gè)? Jun 23, 2025 pm 03:05 PM

MySQL的默認(rèn)事務(wù)隔離級(jí)別是可重複讀(RepeatableRead),它通過MVCC和間隙鎖防止臟讀和不可重複讀,並在大多數(shù)情況下避免幻讀;其他主要級(jí)別包括讀未提交(ReadUncommitted),允許臟讀但性能最快,1.讀已提交(ReadCommitted)確保讀取已提交數(shù)據(jù)但可能遇到不可重複讀和幻讀,2.可重複讀(RepeatableRead)默認(rèn)級(jí)別,保證事務(wù)內(nèi)多次讀取結(jié)果一致,3.串行化(Serializable)最高級(jí)別,通過鎖阻止其他事務(wù)修改數(shù)據(jù),確保數(shù)據(jù)完整性但犧牲性能;可通過

如何安全清除舊的mysql binlog文件? 如何安全清除舊的mysql binlog文件? Jun 19, 2025 am 01:01 AM

清理MySQL的binlog文件應(yīng)使用PURGEBINARYLOGS命令或設(shè)置自動(dòng)過期時(shí)間,不可直接刪除文件。 1.使用PURGE命令可按文件名或時(shí)間清理舊日誌,執(zhí)行前需確認(rèn)從庫已不再使用相關(guān)日誌;2.通過SHOWMASTERSTATUS和SHOWSLAVESTATUS查看當(dāng)前日誌狀態(tài)及從庫位置,確保清理範(fàn)圍安全;3.MySQL8.0 推薦設(shè)置binlog_expire_logs_seconds參數(shù)實(shí)現(xiàn)自動(dòng)清理,適合長期運(yùn)行環(huán)境;4.直接刪除文件會(huì)導(dǎo)致主從同步失敗、日誌信息不一致等嚴(yán)重問題,必須避

如何將MySQL bin目錄添加到系統(tǒng)路徑 如何將MySQL bin目錄添加到系統(tǒng)路徑 Jul 01, 2025 am 01:39 AM

要將MySQL的bin目錄添加到系統(tǒng)PATH,需根據(jù)不同操作系統(tǒng)進(jìn)行配置。 1.Windows系統(tǒng):找到MySQL安裝目錄下的bin文件夾(默認(rèn)路徑通常為C:\ProgramFiles\MySQL\MySQLServerX.X\bin),右鍵“此電腦”→“屬性”→“高級(jí)系統(tǒng)設(shè)置”→“環(huán)境變量”,在“系統(tǒng)變量”中選中Path並編輯,新增MySQLbin路徑,保存後重啟命令提示符並輸入mysql--version驗(yàn)證;2.macOS和Linux系統(tǒng):Bash用戶編輯~/.bashrc或~/.bash_

如何在Windows 11上安裝MySQL 如何在Windows 11上安裝MySQL Jun 29, 2025 am 01:47 AM

安裝MySQL在Windows11上的關(guān)鍵步驟如下:1.下載正確的版本,選擇Windows的MSI安裝包並確保系統(tǒng)為64位;2.安裝時(shí)選擇“Custom”模式,添加MySQLServer並設(shè)置合適的安裝路徑;3.運(yùn)行配置嚮導(dǎo),選擇“ServerComputer”配置類型,設(shè)置root密碼,選擇自動(dòng)啟動(dòng)方式;4.測試安裝成功後,若提示命令不可用,則將MySQL的bin目錄添加到系統(tǒng)PATH環(huán)境變量中。按照這些步驟操作即可順利完成安裝與配置。

重置MySQL Server的root密碼 重置MySQL Server的root密碼 Jul 03, 2025 am 02:32 AM

要重置MySQL的root密碼,請按以下步驟操作:1.停止MySQL服務(wù)器,使用sudosystemctlstopmysql或sudosystemctlstopmysqld;2.以--skip-grant-tables模式啟動(dòng)MySQL,執(zhí)行sudomysqld--skip-grant-tables&;3.登錄MySQL並根據(jù)版本執(zhí)行相應(yīng)的SQL命令修改密碼,如FLUSHPRIVILEGES;ALTERUSER'root'@'localhost'IDENTIFIEDBY'your_new

See all articles