亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

MYSQL高效率地裝載數(shù)據(jù)解決方案

添加時(shí)間:2014-10-28 17:42:37  添加: 思海網(wǎng)絡(luò) 
   很多時(shí)候關(guān)心的是優(yōu)化SELECT 查詢,因?yàn)樗鼈兪亲畛S玫牟樵儯掖_定怎樣優(yōu)化它們并不總是直截了當(dāng)。相對(duì)來(lái)說(shuō),將數(shù)據(jù)裝入數(shù)據(jù)庫(kù)是直截了當(dāng)?shù)。然而,也存在可用?lái)改善數(shù)據(jù)裝載操作效率的策略,其基本原理如下:

  成批裝載較單行裝載更快,因?yàn)樵谘b載每個(gè)記錄后,不需要刷新索引高速緩存;可在成批記錄裝入后才刷新。

  在表無(wú)索引時(shí)裝載比索引后裝載更快。如果有索引,不僅必須增加記錄到數(shù)據(jù)文件,而且還要修改每個(gè)索引以反映增加了的新記錄。

  較短的SQL 語(yǔ)句比較長(zhǎng)的SQL 語(yǔ)句要快,因?yàn)樗鼈兩婕胺⻊?wù)器方的分析較少,而且還因?yàn)閷⑺鼈兺ㄟ^(guò)網(wǎng)絡(luò)從客戶機(jī)發(fā)送到服務(wù)器更快。這些因素中有一些似乎微不足道(特別是最后一個(gè)因素),但如果要裝載大量的數(shù)據(jù),即使是很小的因素也會(huì)產(chǎn)生很大的不同結(jié)果。我們可以利用上述的一般原理推導(dǎo)出幾個(gè)關(guān)于如何最快地裝載數(shù)據(jù)的實(shí)際結(jié)論:

  LOAD DATA(包括其所有形式)比INSERT 效率高,因?yàn)槠涑膳b載行。索引刷新較少,并且服務(wù)器只需分析和解釋一條語(yǔ)句而不是幾條語(yǔ)句。

  LOAD DATA 比LOAD DATA LOCAL 效率更高。利用LOAD DATA,文件必須定位在服務(wù)器上,而且必須具有FILE 權(quán)限,但服務(wù)器可從磁盤直接讀取文件。利用LOAD DATA LOCAL,客戶機(jī)讀取文件并將其通過(guò)網(wǎng)絡(luò)發(fā)送給服務(wù)器,這樣做很慢。

  如果必須使用INSERT,應(yīng)該利用允許在單個(gè)語(yǔ)句中指定多行的形式,例如:

  可在語(yǔ)句中指定的行越多越好。這樣會(huì)減少所需的語(yǔ)句數(shù)目,降低索引刷新量。如果使用mysqldump 生成數(shù)據(jù)庫(kù)備份文件,應(yīng)該使用--extended-insert 選項(xiàng),使轉(zhuǎn)儲(chǔ)文件包含多行INSERT 語(yǔ)句。還可以使用- - o p t(優(yōu)化) ,它啟用--extended-insert 選項(xiàng)。

  反之,應(yīng)該避免使用mysqldump 的--complete-insert 選項(xiàng);此選項(xiàng)會(huì)導(dǎo)致INSERT 語(yǔ)句為單行,執(zhí)行時(shí)間更長(zhǎng),比不用--complete-insert 選項(xiàng)生成的語(yǔ)句需要更多的分析。

  使用壓縮了的客戶機(jī)/服務(wù)器協(xié)議以減少網(wǎng)絡(luò)數(shù)據(jù)流量。對(duì)于大多數(shù)MySQL客戶機(jī),可以用--compress 命令行選項(xiàng)來(lái)指定。它一般只用于較慢的網(wǎng)絡(luò),因?yàn)閴嚎s需要占用大量的處理器時(shí)間。

  讓MySQL插入缺省值;不要在INSERT 語(yǔ)句中指定將以任意方式賦予缺省值的列。平均來(lái)說(shuō),這樣做語(yǔ)句會(huì)更短,能減少通過(guò)網(wǎng)絡(luò)傳送給服務(wù)器的字符數(shù)。此外,語(yǔ)句包含的值較少,服務(wù)器所進(jìn)行的分析和轉(zhuǎn)換就會(huì)較少。

  如果表是索引的,則可利用批量插入( LOAD DATA 或多行的INSERT 語(yǔ)句)來(lái)減少索引的開(kāi)銷。這樣會(huì)最小化索引更新的影響,因?yàn)樗饕恍枰谒行刑幚磉^(guò)時(shí)才進(jìn)行刷新,而不是在每行處理后就刷新。

如果需要將大量數(shù)據(jù)裝入一個(gè)新表,應(yīng)該創(chuàng)建該表且在未索引時(shí)裝載,裝載數(shù)據(jù)后才創(chuàng)建索引,這樣做較快。一次創(chuàng)建索引(而不是每行修改一次索引)較快。

如果在裝載之前刪除或禁用索引,裝入數(shù)據(jù)后再重新創(chuàng)建或啟用索引可能使裝載更快。如果想對(duì)數(shù)據(jù)裝載使用刪除或禁用策略,一定要做一些實(shí)驗(yàn),看這樣做是否值得(如果將少量數(shù)據(jù)裝入一個(gè)大表中,重建和索引所花費(fèi)的時(shí)間可能比裝載數(shù)據(jù)的時(shí)間還要長(zhǎng))。

可用DROP INDEX 和CREATE INDEX 來(lái)刪除和重建索引。另一種可供選擇的方法是利用myisamchk 或isamchk 禁用和啟用索引。這需要在MySQL服務(wù)器主機(jī)上有一個(gè)帳戶,并對(duì)表文件有寫入權(quán)。為了禁用表索引,可進(jìn)入相應(yīng)的數(shù)據(jù)庫(kù)目錄,執(zhí)行下列命令之一:

  對(duì)具有.MYI 擴(kuò)展名的索引文件的MyISAM 表使用myisamchk,對(duì)具有.ISM 擴(kuò)展名的索引文件的ISAM 表使用isamchk。在向表中裝入數(shù)據(jù)后,按如下激活索引:

  如果決定使用索引禁用和激活,應(yīng)該使用第13章中介紹的表修復(fù)鎖定協(xié)議以阻止服務(wù)器同時(shí)更改鎖(雖然此時(shí)不對(duì)表進(jìn)行修復(fù),但要對(duì)它像表修復(fù)過(guò)程一樣進(jìn)行修改,因此需要使用相同的鎖定協(xié)議)。

  上述數(shù)據(jù)裝載原理也適用于與需要執(zhí)行不同操作的客戶機(jī)有關(guān)的固定查詢。例如,一般希望避免在頻繁更新的表上長(zhǎng)時(shí)間運(yùn)行SELECT 查詢。長(zhǎng)時(shí)間運(yùn)行SELECT 查詢會(huì)產(chǎn)生大量爭(zhēng)用,并降低寫入程序的性能。一種可能的解決方法為,如果執(zhí)行寫入的主要是INSERT 操作,那么先將記錄存入一個(gè)臨時(shí)表,然后定期地將這些記錄加入主表中。如果需要立即訪問(wèn)新記錄,這不是一個(gè)可行的方法。但只要能在一個(gè)較短的時(shí)間內(nèi)不訪問(wèn)它們,就可以使用這個(gè)方法。使用臨時(shí)表有兩個(gè)方面的好處。首先,它減少了與主表上SELECT 查詢語(yǔ)句的爭(zhēng)用,因此,執(zhí)行更快。其次,從臨時(shí)表將記錄裝入主表的總時(shí)間較分別裝載記錄的總時(shí)間少;相應(yīng)的索引高速緩存只需在每個(gè)批量裝載結(jié)束時(shí)進(jìn)行刷新,而不是在每行裝載后刷新。這個(gè)策略的一個(gè)應(yīng)用是進(jìn)入Web 服務(wù)器的Web 頁(yè)訪問(wèn)MySQL數(shù)據(jù)庫(kù)。在此情形下,可能沒(méi)有保證記錄立即進(jìn)入主表的較高權(quán)限。

  如果數(shù)據(jù)并不完全是那種在系統(tǒng)非正常關(guān)閉事件中插入的單個(gè)記錄,那么減少索引刷新的另一策略是使用MyISAM 表的DELAYED_KEY_WRITE 表創(chuàng)建選項(xiàng)(如果將MySQL用于某些數(shù)據(jù)錄入工作時(shí)可能會(huì)出現(xiàn)這種情況)。此選項(xiàng)使索引高速緩存只偶爾刷新,而不是在每次插入后都要刷新。

  如果希望在服務(wù)器范圍內(nèi)利用延遲索引刷新,只要利用--delayed-key-write 選項(xiàng)啟動(dòng)mysqld 即可。在此情形下,索引塊寫操作延遲到必須刷新塊以便為其他索引值騰出空間為止,或延遲到執(zhí)行了一個(gè)flush-tables 命令后,或延遲到該索引表關(guān)閉。

關(guān)鍵字:MYSQL、數(shù)據(jù)、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站