可通過以下語句查看日志存放路徑:
為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)營銷推廣、競價托管、品牌運營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)建站擁有網(wǎng)絡(luò)營銷運營團(tuán)隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
show?variables?like?'general_log_file';
結(jié)果:
其中,如圖所示紅框部分即為mysql日志文件的存放路徑及文件名。
可通過以下語句查看日志存放路徑:
show variables like 'general_log_file';結(jié)果:
其中,如圖所示紅框部分即為mysql日志文件的存放路徑及文件名。
有時候我們會不小心對一個大表進(jìn)行了 update,比如說寫錯了 where 條件......
此時,如果 kill 掉 update 線程,那回滾 undo log 需要不少時間。如果放置不管,也不知道 update 會持續(xù)多久。
那我們能知道 update 的進(jìn)度么?
實驗
我們先創(chuàng)建一個測試數(shù)據(jù)庫:
快速創(chuàng)建一些數(shù)據(jù):
連續(xù)執(zhí)行同樣的 SQL 數(shù)次,就可以快速構(gòu)造千萬級別的數(shù)據(jù):
查看一下總的行數(shù):
我們來釋放一個大的 update:
然后另起一個 session,觀察 performance_schema 中的信息:
可以看到,performance_schema 會列出當(dāng)前 SQL 從引擎獲取的行數(shù)。
等 SQL 結(jié)束后,我們看一下 update 從引擎總共獲取了多少行:
可以看到該 update 從引擎總共獲取的行數(shù)是表大小的兩倍,那我們可以估算:update 的進(jìn)度 = (rows_examined) / (2 * 表行數(shù))
????小貼士
information_schema.tables 中,提供了對表行數(shù)的估算,比起使用 select count(1) 的成本低很多,幾乎可以忽略不計。
那么是不是所有的 update,從引擎中獲取的行數(shù)都會是表大小的兩倍呢?這個還是要分情況討論的,上面的 SQL 更新了主鍵,如果只更新內(nèi)容而不更新主鍵呢?我們來試驗一下:
等待 update 結(jié)束,查看 row_examined,發(fā)現(xiàn)其剛好是表大?。?/p>
那我們怎么準(zhǔn)確的這個倍數(shù)呢?
一種方法是靠經(jīng)驗:update 語句的 where 中會掃描多少行,是否修改主鍵,是否修改唯一鍵,以這些條件來估算系數(shù)。
另一種方法就是在同樣結(jié)構(gòu)的較小的表上試驗一下,獲取倍數(shù)。
這樣,我們就能準(zhǔn)確估算一個大型 update 的進(jìn)度了。