從MySQL得到最大的優(yōu)化性能
更新時(shí)間:2006年11月21日 00:00:00 作者:
優(yōu)化是一項(xiàng)復(fù)雜的任務(wù),因?yàn)樗罱K需要對(duì)整個(gè)系統(tǒng)的理解.當(dāng)用你的系統(tǒng)/應(yīng)用的小知識(shí)做一些局部?jī)?yōu)化是可能的時(shí)候,你越想讓你的系統(tǒng)更優(yōu)化,你必須知道它也越多. 因此,本章將試圖解釋并給出優(yōu)化MySQL的不同方法的一些例子.但是記住總是有某些(逐漸變難)是系統(tǒng)更快的方法留著去做. 為了使一個(gè)系統(tǒng)更快的最重要部分當(dāng)然是基本設(shè)計(jì).你也需要知道你的系統(tǒng)將做這樣的事情,那就是你的瓶頸. 最常見(jiàn)的瓶頸是:
磁盤尋道.磁盤花時(shí)間找到一個(gè)數(shù)據(jù),用在1999年的現(xiàn)代磁盤其平均時(shí)間通常小于10ms,因此理論上我們能大約一秒尋道 1000 次.這個(gè)時(shí)間用新磁盤提高很慢并且很難對(duì)一個(gè)表優(yōu)化.優(yōu)化它的方法是將數(shù)據(jù)散布在多個(gè)磁盤上. 當(dāng)磁盤在我們需要讀數(shù)據(jù)的正確位置時(shí),磁盤讀/寫.用1999年的現(xiàn)代,一個(gè)磁盤傳輸類似10-20Mb/s.這必尋道更容易優(yōu)化,因?yàn)槟隳軓亩鄠€(gè)磁盤并行地讀. CPU周期.當(dāng)我們讀數(shù)據(jù)進(jìn)內(nèi)存時(shí),(或如果它已經(jīng)在那里)我們需要處理它以達(dá)到我們的結(jié)果.當(dāng)我們有相對(duì)內(nèi)存較小的表時(shí),這是最常見(jiàn)的限制因素,但是用小表速度通常不是問(wèn)題. 內(nèi)存帶寬.當(dāng)CPU需要超出適合cpu緩存的數(shù)據(jù)時(shí),緩存帶寬就成為內(nèi)存的一個(gè)瓶頸.這是對(duì)大多數(shù)系統(tǒng)的一個(gè)不常見(jiàn)的瓶頸但是你應(yīng)該知道它. 10.2 系統(tǒng)/編譯時(shí)和啟動(dòng)參數(shù)的調(diào)節(jié)我們以系統(tǒng)級(jí)的東西開(kāi)始,因?yàn)檫@些決策的某一些很早就做好了.在其他情況下,快速瀏覽這部分可能就夠了,因?yàn)樗鼘?duì)大收獲并不重要,但是有一個(gè)關(guān)于在這個(gè)層次上收獲有多大的感覺(jué)總是好的. 使用的缺省OS確實(shí)重要!為了最大程度地使用多CPU,應(yīng)該使用Solaris(因?yàn)榫€程工作得確實(shí)不錯(cuò))或Linux(因?yàn)?.2本的核心又確實(shí)不錯(cuò)的SMP支持).而且在32位的機(jī)器上,Linux缺省有2G的文件大小限制.當(dāng)新的文件系統(tǒng)被釋出時(shí)( XFS ),希望這不久被修正. 因?yàn)槲覀儧](méi)在很多平臺(tái)上運(yùn)行生產(chǎn)MySQL,我們忠告你在可能選擇它前,測(cè)試你打算運(yùn)行的平臺(tái).
其他建議:
如果你有足夠的RAM,你能刪除所有交換設(shè)備.一些操作系統(tǒng)在某些情況下將使用一個(gè)SWAP設(shè)備,即使你有空閑的內(nèi)存. 使用--skip -locking的MySQL選項(xiàng)避免外部鎖定.注意這將不影響MySQL功能,只要它僅運(yùn)行在一個(gè)服務(wù)器上.只要在你運(yùn)行myisamchk以前,記得要停掉服務(wù)器(或鎖定相關(guān)部分).在一些系統(tǒng)上這個(gè)開(kāi)關(guān)是強(qiáng)制的,因?yàn)橥獠挎i定不是在任何情況下都工作.當(dāng)用MIT-pthreads編譯時(shí),-- skip-locking選項(xiàng)缺省為打開(kāi)(on),因?yàn)閒lock()沒(méi)在所有的平臺(tái)上被MIT-pthreads充分支持.唯一的情況是如果你對(duì)同一數(shù)據(jù)運(yùn)行MySQL服務(wù)器(不是客戶),你不能使用--skip-locking之時(shí),否則對(duì)沒(méi)有先清掉(flushing)或先鎖定mysqld服務(wù)器的表上運(yùn)行myisamchk.你仍然能使用LOCK TABLES/ UNLOCK TABLES,即使你正在使用--skip-locking.
編譯和鏈接怎樣影響MySQL的速度
大多數(shù)下列測(cè)試在Linux上并用MySQL基準(zhǔn)進(jìn)行的,但是它們應(yīng)該對(duì)其他操作系統(tǒng)和工作負(fù)載給出一些指示. 當(dāng)你用-static鏈接時(shí),你得到最快的可執(zhí)行文件.使用Unix套接字而非TCP/IP連接一個(gè)數(shù)據(jù)庫(kù)也可給出好一些的性能. 在Linux上,當(dāng)用pgcc和-O6編譯時(shí),你將得到最快的代碼.為了用這些選項(xiàng)編譯“sql_yacc.cc”,你需要大約200M內(nèi)存,因?yàn)?nbsp;gcc/pgcc需要很多內(nèi)存使所有函數(shù)嵌入(inline).在配置MySQL時(shí),你也應(yīng)該設(shè)定CXX=gcc以避免包括libstdc++庫(kù)(它不需要). 只通過(guò)使用一個(gè)較好的編譯器或較好的編譯器選項(xiàng),在應(yīng)用中你能得到一個(gè)10-30%的加速.如果你自己編譯SQL服務(wù)器,這特別重要! 在Intel上,你應(yīng)該例如使用pgcc或Cygnus CodeFusion編譯器得到最大速度.我們已經(jīng)測(cè)試了新的 Fujitsu編譯器,但是它是還沒(méi)足夠不出錯(cuò)來(lái)優(yōu)化編譯MySQL.
這里是我們做過(guò)的一些測(cè)量表:
如果你以-O6使用pgcc并且編譯任何東西,mysqld服務(wù)器是比用gcc快11%(用字符串99的版本). 如果你動(dòng)態(tài)地鏈接(沒(méi)有-static),結(jié)果慢了13%.注意你仍能使用一個(gè)動(dòng)態(tài)連接的MySQL庫(kù).只有服務(wù)器對(duì)性能是關(guān)鍵的. 如果你使用TCP/IP而非Unix套接字,結(jié)果慢7.5%. 在一個(gè)Sun SPARCstation 10上,gcc2.7.3是比Sun Pro C++ 4.2快13%. 在Solaris 2.5.1上,在單個(gè)處理器上MIT-pthreads比帶原生線程的Solaris慢8-12%.以更多的負(fù)載/cpus,差別應(yīng)該變得更大. 由TcX提供的MySQL-Linux的分發(fā)用pgcc編譯并靜態(tài)鏈接.
正如前面所述,磁盤尋道是一個(gè)性能的大瓶頸.當(dāng)數(shù)據(jù)開(kāi)始增長(zhǎng)以致緩存變得不可能時(shí),這個(gè)問(wèn)題變得越來(lái)越明顯.對(duì)大數(shù)據(jù)庫(kù),在那你或多或少地要隨機(jī)存取數(shù)據(jù),你可以依靠你將至少需要一次磁盤尋道來(lái)讀取并且?guī)状未疟P尋道寫入.為了使這個(gè)問(wèn)題最小化,使用有低尋道時(shí)間的磁盤. 為了增加可用磁盤軸的數(shù)量(并且從而減少尋道開(kāi)銷),符號(hào)聯(lián)接文件到不同磁盤或分割磁盤是可能的. 使用符號(hào)連接這意味著你將索引/數(shù)據(jù)文件符號(hào)從正常的數(shù)據(jù)目錄鏈接到其他磁盤(那也可以被分割的).這使得尋道和讀取時(shí)間更好(如果磁盤不用于其他事情).見(jiàn)10.2.2.1 使用數(shù)據(jù)庫(kù)和表的符號(hào)鏈接. 分割分割意味著你有許多磁盤并把第一塊放在第一個(gè)磁盤上,在第二塊放在第二個(gè)磁盤上,并且第 n塊在第(n mod number_of_disks)磁盤上,等等.這意味著,如果你的正常數(shù)據(jù)大小于分割大小(或完美地排列過(guò)),你將得到較好一些的性能.注意,分割是否很依賴于OS和分割大小.因此用不同的分割大小測(cè)試你的應(yīng)用程序.見(jiàn)10.8 使用你自己的基準(zhǔn).注意對(duì)分割的速度差異很依賴于參數(shù),取決于你如何分割參數(shù)和磁盤數(shù)量,你可以得出以數(shù)量級(jí)的不同.注意你必須選擇為隨機(jī)或順序存取優(yōu)化. 為了可靠,你可能想要使用襲擊RAID 0+1(分割+鏡像),但是在這種情況下,你將需要2*N個(gè)驅(qū)動(dòng)器來(lái)保存N個(gè)驅(qū)動(dòng)器的數(shù)據(jù).如果你有錢,這可能是最好的選擇!然而你也可能必須投資一些卷管理軟件投資以高效地處理它. 一個(gè)好選擇是讓稍重要的數(shù)據(jù)(它能再生)上存在RAID 0磁盤上,而將確實(shí)重要的數(shù)據(jù)(像主機(jī)信息和日志文件)存在一個(gè)RAID 0+1或RAID N磁盤上.如果因?yàn)楦缕媾嘉荒阌性S多寫入,RAID N可能是一個(gè)問(wèn)題. 你也可以對(duì)數(shù)據(jù)庫(kù)使用的文件系統(tǒng)設(shè)置參數(shù).一個(gè)容易的改變是以noatime選項(xiàng)掛裝文件系統(tǒng).這是它跳過(guò)更新在inode中的最后訪問(wèn)時(shí)間,而且這將避免一些磁盤尋道.
你可以從數(shù)據(jù)庫(kù)目錄移動(dòng)表和數(shù)據(jù)庫(kù)到別處,并且用鏈接到新地點(diǎn)的符號(hào)代替它們.你可能想要這樣做,例如,轉(zhuǎn)移一個(gè)數(shù)據(jù)庫(kù)到有更多空閑空間的一個(gè)文件系統(tǒng). 如果MySQL注意到一個(gè)表是一個(gè)符號(hào)鏈接,它將解析符號(hào)鏈接并且使用其實(shí)際指向的表,它可工作在支持realpath()調(diào)用的所有系統(tǒng)上(至少 Linux和Solaris支持realpath())!在不支持realpath()的系統(tǒng)上,你應(yīng)該不同時(shí)通過(guò)真實(shí)路徑和符號(hào)鏈接訪問(wèn)表!如果你這樣做,表在任何更新后將不一致. MySQL缺省不支持?jǐn)?shù)據(jù)庫(kù)鏈接.只要你不在數(shù)據(jù)庫(kù)之間做一個(gè)符號(hào)鏈接,一切將工作正常.假定你在MySQL數(shù)據(jù)目錄下有一個(gè)數(shù)據(jù)庫(kù)db1,并且做了一個(gè)符號(hào)鏈接db2指向db1:
shell&> cd /path/to/datadir
shell&> ln -s db1 db2
現(xiàn)在,對(duì)在db1中的任一表tbl_a,在db2種也好象有一個(gè)表tbl_a.如果一個(gè)線程更新db1.tbl_a并且另一個(gè)線程更新db2.tbl_a,將有問(wèn)題. 如果你確實(shí)需要這樣,你必須改變下列在“mysys/mf_format.c”中的代碼:
if (!lstat(to,&stat_buff)) /* Check if it's a symbolic link */
if (S_ISLNK(stat_buff.st_mode) && realpath(to,buff))
把代碼改變?yōu)檫@樣:
if (realpath(to,buff))
磁盤尋道.磁盤花時(shí)間找到一個(gè)數(shù)據(jù),用在1999年的現(xiàn)代磁盤其平均時(shí)間通常小于10ms,因此理論上我們能大約一秒尋道 1000 次.這個(gè)時(shí)間用新磁盤提高很慢并且很難對(duì)一個(gè)表優(yōu)化.優(yōu)化它的方法是將數(shù)據(jù)散布在多個(gè)磁盤上. 當(dāng)磁盤在我們需要讀數(shù)據(jù)的正確位置時(shí),磁盤讀/寫.用1999年的現(xiàn)代,一個(gè)磁盤傳輸類似10-20Mb/s.這必尋道更容易優(yōu)化,因?yàn)槟隳軓亩鄠€(gè)磁盤并行地讀. CPU周期.當(dāng)我們讀數(shù)據(jù)進(jìn)內(nèi)存時(shí),(或如果它已經(jīng)在那里)我們需要處理它以達(dá)到我們的結(jié)果.當(dāng)我們有相對(duì)內(nèi)存較小的表時(shí),這是最常見(jiàn)的限制因素,但是用小表速度通常不是問(wèn)題. 內(nèi)存帶寬.當(dāng)CPU需要超出適合cpu緩存的數(shù)據(jù)時(shí),緩存帶寬就成為內(nèi)存的一個(gè)瓶頸.這是對(duì)大多數(shù)系統(tǒng)的一個(gè)不常見(jiàn)的瓶頸但是你應(yīng)該知道它. 10.2 系統(tǒng)/編譯時(shí)和啟動(dòng)參數(shù)的調(diào)節(jié)我們以系統(tǒng)級(jí)的東西開(kāi)始,因?yàn)檫@些決策的某一些很早就做好了.在其他情況下,快速瀏覽這部分可能就夠了,因?yàn)樗鼘?duì)大收獲并不重要,但是有一個(gè)關(guān)于在這個(gè)層次上收獲有多大的感覺(jué)總是好的. 使用的缺省OS確實(shí)重要!為了最大程度地使用多CPU,應(yīng)該使用Solaris(因?yàn)榫€程工作得確實(shí)不錯(cuò))或Linux(因?yàn)?.2本的核心又確實(shí)不錯(cuò)的SMP支持).而且在32位的機(jī)器上,Linux缺省有2G的文件大小限制.當(dāng)新的文件系統(tǒng)被釋出時(shí)( XFS ),希望這不久被修正. 因?yàn)槲覀儧](méi)在很多平臺(tái)上運(yùn)行生產(chǎn)MySQL,我們忠告你在可能選擇它前,測(cè)試你打算運(yùn)行的平臺(tái).
其他建議:
如果你有足夠的RAM,你能刪除所有交換設(shè)備.一些操作系統(tǒng)在某些情況下將使用一個(gè)SWAP設(shè)備,即使你有空閑的內(nèi)存. 使用--skip -locking的MySQL選項(xiàng)避免外部鎖定.注意這將不影響MySQL功能,只要它僅運(yùn)行在一個(gè)服務(wù)器上.只要在你運(yùn)行myisamchk以前,記得要停掉服務(wù)器(或鎖定相關(guān)部分).在一些系統(tǒng)上這個(gè)開(kāi)關(guān)是強(qiáng)制的,因?yàn)橥獠挎i定不是在任何情況下都工作.當(dāng)用MIT-pthreads編譯時(shí),-- skip-locking選項(xiàng)缺省為打開(kāi)(on),因?yàn)閒lock()沒(méi)在所有的平臺(tái)上被MIT-pthreads充分支持.唯一的情況是如果你對(duì)同一數(shù)據(jù)運(yùn)行MySQL服務(wù)器(不是客戶),你不能使用--skip-locking之時(shí),否則對(duì)沒(méi)有先清掉(flushing)或先鎖定mysqld服務(wù)器的表上運(yùn)行myisamchk.你仍然能使用LOCK TABLES/ UNLOCK TABLES,即使你正在使用--skip-locking.
編譯和鏈接怎樣影響MySQL的速度
大多數(shù)下列測(cè)試在Linux上并用MySQL基準(zhǔn)進(jìn)行的,但是它們應(yīng)該對(duì)其他操作系統(tǒng)和工作負(fù)載給出一些指示. 當(dāng)你用-static鏈接時(shí),你得到最快的可執(zhí)行文件.使用Unix套接字而非TCP/IP連接一個(gè)數(shù)據(jù)庫(kù)也可給出好一些的性能. 在Linux上,當(dāng)用pgcc和-O6編譯時(shí),你將得到最快的代碼.為了用這些選項(xiàng)編譯“sql_yacc.cc”,你需要大約200M內(nèi)存,因?yàn)?nbsp;gcc/pgcc需要很多內(nèi)存使所有函數(shù)嵌入(inline).在配置MySQL時(shí),你也應(yīng)該設(shè)定CXX=gcc以避免包括libstdc++庫(kù)(它不需要). 只通過(guò)使用一個(gè)較好的編譯器或較好的編譯器選項(xiàng),在應(yīng)用中你能得到一個(gè)10-30%的加速.如果你自己編譯SQL服務(wù)器,這特別重要! 在Intel上,你應(yīng)該例如使用pgcc或Cygnus CodeFusion編譯器得到最大速度.我們已經(jīng)測(cè)試了新的 Fujitsu編譯器,但是它是還沒(méi)足夠不出錯(cuò)來(lái)優(yōu)化編譯MySQL.
這里是我們做過(guò)的一些測(cè)量表:
如果你以-O6使用pgcc并且編譯任何東西,mysqld服務(wù)器是比用gcc快11%(用字符串99的版本). 如果你動(dòng)態(tài)地鏈接(沒(méi)有-static),結(jié)果慢了13%.注意你仍能使用一個(gè)動(dòng)態(tài)連接的MySQL庫(kù).只有服務(wù)器對(duì)性能是關(guān)鍵的. 如果你使用TCP/IP而非Unix套接字,結(jié)果慢7.5%. 在一個(gè)Sun SPARCstation 10上,gcc2.7.3是比Sun Pro C++ 4.2快13%. 在Solaris 2.5.1上,在單個(gè)處理器上MIT-pthreads比帶原生線程的Solaris慢8-12%.以更多的負(fù)載/cpus,差別應(yīng)該變得更大. 由TcX提供的MySQL-Linux的分發(fā)用pgcc編譯并靜態(tài)鏈接.
正如前面所述,磁盤尋道是一個(gè)性能的大瓶頸.當(dāng)數(shù)據(jù)開(kāi)始增長(zhǎng)以致緩存變得不可能時(shí),這個(gè)問(wèn)題變得越來(lái)越明顯.對(duì)大數(shù)據(jù)庫(kù),在那你或多或少地要隨機(jī)存取數(shù)據(jù),你可以依靠你將至少需要一次磁盤尋道來(lái)讀取并且?guī)状未疟P尋道寫入.為了使這個(gè)問(wèn)題最小化,使用有低尋道時(shí)間的磁盤. 為了增加可用磁盤軸的數(shù)量(并且從而減少尋道開(kāi)銷),符號(hào)聯(lián)接文件到不同磁盤或分割磁盤是可能的. 使用符號(hào)連接這意味著你將索引/數(shù)據(jù)文件符號(hào)從正常的數(shù)據(jù)目錄鏈接到其他磁盤(那也可以被分割的).這使得尋道和讀取時(shí)間更好(如果磁盤不用于其他事情).見(jiàn)10.2.2.1 使用數(shù)據(jù)庫(kù)和表的符號(hào)鏈接. 分割分割意味著你有許多磁盤并把第一塊放在第一個(gè)磁盤上,在第二塊放在第二個(gè)磁盤上,并且第 n塊在第(n mod number_of_disks)磁盤上,等等.這意味著,如果你的正常數(shù)據(jù)大小于分割大小(或完美地排列過(guò)),你將得到較好一些的性能.注意,分割是否很依賴于OS和分割大小.因此用不同的分割大小測(cè)試你的應(yīng)用程序.見(jiàn)10.8 使用你自己的基準(zhǔn).注意對(duì)分割的速度差異很依賴于參數(shù),取決于你如何分割參數(shù)和磁盤數(shù)量,你可以得出以數(shù)量級(jí)的不同.注意你必須選擇為隨機(jī)或順序存取優(yōu)化. 為了可靠,你可能想要使用襲擊RAID 0+1(分割+鏡像),但是在這種情況下,你將需要2*N個(gè)驅(qū)動(dòng)器來(lái)保存N個(gè)驅(qū)動(dòng)器的數(shù)據(jù).如果你有錢,這可能是最好的選擇!然而你也可能必須投資一些卷管理軟件投資以高效地處理它. 一個(gè)好選擇是讓稍重要的數(shù)據(jù)(它能再生)上存在RAID 0磁盤上,而將確實(shí)重要的數(shù)據(jù)(像主機(jī)信息和日志文件)存在一個(gè)RAID 0+1或RAID N磁盤上.如果因?yàn)楦缕媾嘉荒阌性S多寫入,RAID N可能是一個(gè)問(wèn)題. 你也可以對(duì)數(shù)據(jù)庫(kù)使用的文件系統(tǒng)設(shè)置參數(shù).一個(gè)容易的改變是以noatime選項(xiàng)掛裝文件系統(tǒng).這是它跳過(guò)更新在inode中的最后訪問(wèn)時(shí)間,而且這將避免一些磁盤尋道.
你可以從數(shù)據(jù)庫(kù)目錄移動(dòng)表和數(shù)據(jù)庫(kù)到別處,并且用鏈接到新地點(diǎn)的符號(hào)代替它們.你可能想要這樣做,例如,轉(zhuǎn)移一個(gè)數(shù)據(jù)庫(kù)到有更多空閑空間的一個(gè)文件系統(tǒng). 如果MySQL注意到一個(gè)表是一個(gè)符號(hào)鏈接,它將解析符號(hào)鏈接并且使用其實(shí)際指向的表,它可工作在支持realpath()調(diào)用的所有系統(tǒng)上(至少 Linux和Solaris支持realpath())!在不支持realpath()的系統(tǒng)上,你應(yīng)該不同時(shí)通過(guò)真實(shí)路徑和符號(hào)鏈接訪問(wèn)表!如果你這樣做,表在任何更新后將不一致. MySQL缺省不支持?jǐn)?shù)據(jù)庫(kù)鏈接.只要你不在數(shù)據(jù)庫(kù)之間做一個(gè)符號(hào)鏈接,一切將工作正常.假定你在MySQL數(shù)據(jù)目錄下有一個(gè)數(shù)據(jù)庫(kù)db1,并且做了一個(gè)符號(hào)鏈接db2指向db1:
shell&> cd /path/to/datadir
shell&> ln -s db1 db2
現(xiàn)在,對(duì)在db1中的任一表tbl_a,在db2種也好象有一個(gè)表tbl_a.如果一個(gè)線程更新db1.tbl_a并且另一個(gè)線程更新db2.tbl_a,將有問(wèn)題. 如果你確實(shí)需要這樣,你必須改變下列在“mysys/mf_format.c”中的代碼:
if (!lstat(to,&stat_buff)) /* Check if it's a symbolic link */
if (S_ISLNK(stat_buff.st_mode) && realpath(to,buff))
把代碼改變?yōu)檫@樣:
if (realpath(to,buff))
您可能感興趣的文章:
- MySQL 性能優(yōu)化的最佳20多條經(jīng)驗(yàn)分享
- MySQL數(shù)據(jù)庫(kù)引擎介紹、區(qū)別、創(chuàng)建和性能測(cè)試的深入分析
- MySQL性能優(yōu)化之max_connections配置參數(shù)淺析
- 淺析Mysql Join語(yǔ)法以及性能優(yōu)化
- MYSQL性能優(yōu)化分享(分庫(kù)分表)
- 可以改善mysql性能的InnoDB配置參數(shù)
- MySQL實(shí)現(xiàn)批量插入以優(yōu)化性能的教程
- MySQL性能優(yōu)化之路---修改配置文件my.cnf
- MySQL性能設(shè)置
- MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
- MySQL配置文件my.cnf中文詳解附mysql性能優(yōu)化方法分享
- 大幅優(yōu)化MySQL查詢性能的奇技淫巧
- MySQL查詢隨機(jī)數(shù)據(jù)的4種方法和性能對(duì)比
- MySQL性能優(yōu)化之table_cache配置參數(shù)淺析
- mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說(shuō)明詳解(16G內(nèi)存)
- mysql性能優(yōu)化之索引優(yōu)化
- MySQL性能分析工具profile使用教程
- MySQL性能全面優(yōu)化方法參考,從CPU,文件系統(tǒng)選擇到mysql.cnf參數(shù)優(yōu)化
相關(guān)文章
mysql獲取group by的總記錄行數(shù)另類方法
mysql獲取group by內(nèi)部可以獲取到某字段的記錄分組統(tǒng)計(jì)總數(shù),而無(wú)法統(tǒng)計(jì)出分組的記錄數(shù),下面有個(gè)可行的方法,大家可以看看2014-10-10MySQL8.0窗口函數(shù)入門實(shí)踐及總結(jié)
這篇文章主要給大家介紹了關(guān)于MySQL8.0窗口函數(shù)入門實(shí)踐及總結(jié)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL8.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06MySQL 數(shù)據(jù)庫(kù)定時(shí)備份的幾種方式(全面)
在操作數(shù)據(jù)過(guò)程中,可能會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)誤,甚至數(shù)據(jù)庫(kù)奔潰,而有效的定時(shí)備份能很好地保護(hù)數(shù)據(jù)庫(kù)。本篇文章主要講述了幾種方法進(jìn)行 MySQL 定時(shí)備份數(shù)據(jù)庫(kù)。2021-09-09Can’t open file:''[Table]mytable.MYI''
也許很多人遇到過(guò)類似Can’t open file: ‘[Table]mytable.MYI’ 這樣的錯(cuò)誤信息,卻不知道怎么解決他,下面我們做個(gè)介紹,2011-01-01MySQL?varchar(n)能存儲(chǔ)幾個(gè)漢字
這篇文章主要介紹了MySQL varchar(n)能存儲(chǔ)幾個(gè)漢字,MySQL中varchar(n)表示n個(gè)字符,無(wú)論漢字和英文,Mysql都能存入n個(gè)字符,僅是實(shí)際字節(jié)長(zhǎng)度有所區(qū)別,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05MySQL百萬(wàn)數(shù)據(jù)深度分頁(yè)優(yōu)化思路解析
這篇文章主要為大家介紹了MySQL百萬(wàn)數(shù)據(jù)深度分頁(yè)優(yōu)化思路分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05MySQL教程DML數(shù)據(jù)操縱語(yǔ)言示例詳解
這篇文章主要為大家介紹了MySQL教程中DML數(shù)據(jù)操縱語(yǔ)言的示例詳解,要想學(xué)好MySQL最重要的是要先學(xué)好數(shù)據(jù)操縱語(yǔ)言DML,本文對(duì)其進(jìn)行了全面的講解2021-10-10