日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql更新记录_如何查看 mysql 表中最近更新的记录

發布時間:2023/12/14 数据库 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql更新记录_如何查看 mysql 表中最近更新的记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

有時候我們會不小心對一個大表進行62616964757a686964616fe58685e5aeb931333433653362了 update,比如說寫錯了 where 條件......

此時,如果 kill 掉 update 線程,那回滾 undo log 需要不少時間。如果放置不管,也不知道 update 會持續多久。

那我們能知道 update 的進度么?

實驗

我們先創建一個測試數據庫:

快速創建一些數據:

連續執行同樣的 SQL 數次,就可以快速構造千萬級別的數據:

查看一下總的行數:

我們來釋放一個大的 update:

然后另起一個 session,觀察 performance_schema 中的信息:

可以看到,performance_schema 會列出當前 SQL 從引擎獲取的行數。

等 SQL 結束后,我們看一下 update 從引擎總共獲取了多少行:

可以看到該 update 從引擎總共獲取的行數是表大小的兩倍,那我們可以估算:update 的進度 = (rows_examined) / (2 * 表行數)

💡小貼士

information_schema.tables 中,提供了對表行數的估算,比起使用 select count(1) 的成本低很多,幾乎可以忽略不計。

那么是不是所有的 update,從引擎中獲取的行數都會是表大小的兩倍呢?這個還是要分情況討論的,上面的 SQL 更新了主鍵,如果只更新內容而不更新主鍵呢?我們來試驗一下:

等待 update 結束,查看 row_examined,發現其剛好是表大小:

那我們怎么準確的這個倍數呢?

一種方法是靠經驗:update 語句的 where 中會掃描多少行,是否修改主鍵,是否修改唯一鍵,以這些條件來估算系數。

另一種方法就是在同樣結構的較小的表上試驗一下,獲取倍數。

這樣,我們就能準確估算一個大型 update 的進度了。

總結

以上是生活随笔為你收集整理的mysql更新记录_如何查看 mysql 表中最近更新的记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。