1、drop table table_name 立刻釋放磁盤空間 ,不管是 Innodb和MyISAM ;
成都創(chuàng)新互聯(lián)成立與2013年,先為海曙等服務(wù)建站,海曙等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為海曙企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
2、truncate table table_name 立刻釋放磁盤空間 ,不管是 Innodb和MyISAM 。truncate table其實(shí)有點(diǎn)類似于drop table 然后creat,只不過這個(gè)create table 的過程做了優(yōu)化,比如表結(jié)構(gòu)文件之前已經(jīng)有了等等。所以速度上應(yīng)該是接近drop table的速度;
3、delete from table_name刪除表的全部數(shù)據(jù),對(duì)于MyISAM 會(huì)立刻釋放磁盤空間 (應(yīng)該是做了特別處理,也比較合理),InnoDB 不會(huì)釋放磁盤空間;
4、對(duì)于delete from table_name where xxx帶條件的刪除, 不管是innodb還是MyISAM都不會(huì)釋放磁盤空間;
5、delete操作以后使用optimize table table_name 會(huì)立刻釋放磁盤空間。不管是innodb還是myisam 。所以要想達(dá)到釋放磁盤空間的目的,delete以后執(zhí)行optimize table 操作。
6、delete from表以后雖然未釋放磁盤空間,但是下次插入數(shù)據(jù)的時(shí)候,仍然可以使用這部分空間。
使用 unbuffered cursor 可以避免內(nèi)存問題。
cursor 默認(rèn)使用 buffered 模式。這種模式會(huì)把所有結(jié)果集返回并載入內(nèi)存。如果結(jié)果集很大的話,內(nèi)存會(huì)爆。
unbuffered cursor 是每次只將下一行結(jié)果返回,內(nèi)存占用很小。不過這種模式缺點(diǎn)很多,所以沒有作為默認(rèn)的模式。
1.修改配置文件,擴(kuò)大查詢內(nèi)存方面的,例如tmp_table_size,還有別的根據(jù)實(shí)際情況放大點(diǎn)
2.優(yōu)化查詢語句,盡量避免查詢整張表的數(shù)據(jù)