濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 詳解PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法

詳解PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法

熱門標(biāo)簽:高德地圖標(biāo)注電話怎么沒了 中國(guó)地圖標(biāo)注省份用什么符號(hào) 北京智能外呼系統(tǒng)供應(yīng)商家 孝感銷售電銷機(jī)器人廠家 江西穩(wěn)定外呼系統(tǒng)供應(yīng)商 奧維地圖標(biāo)注字體大小修改 智能電銷機(jī)器人教育 電話機(jī)器人錄音師薪資 無(wú)錫梁溪公司怎樣申請(qǐng)400電話

關(guān)鍵字:批量數(shù)據(jù)導(dǎo)入,數(shù)據(jù)加載,大量插入,加快,提升速度
多元化選擇時(shí)代,人生里很多事物都是如此,凡事都沒有一成不變的方式和方法。不管白貓黑貓,能抓老鼠的就是好貓,適合自己的就是最好的。
提升批量數(shù)據(jù)導(dǎo)入的方法亦是如此,沒有何種方法是最優(yōu)的,應(yīng)用任何方法前根據(jù)自己的實(shí)際情況權(quán)衡利弊,做出選擇。
批量導(dǎo)入數(shù)據(jù)之前,無(wú)論采取何種方式,務(wù)必做好相應(yīng)的備份。
導(dǎo)入完成后亦需對(duì)相應(yīng)對(duì)象進(jìn)行ANALYZE操作,這樣查詢優(yōu)化器才會(huì)按照最新的統(tǒng)計(jì)信息生成正確的執(zhí)行計(jì)劃。

下面正式介紹提升批量數(shù)據(jù)導(dǎo)入性能的n種方法。

方法1:禁用自動(dòng)提交。

psql
\set AUTOCOMMIT off

其他
BEGIN;
執(zhí)行批量數(shù)據(jù)導(dǎo)入
COMMIT;

方法2:設(shè)置表為UNLOGGED。

導(dǎo)入數(shù)據(jù)之前先把表改成UNLOGGED模式,導(dǎo)入完成后改回LOGGED模式。

ALTER TABLE tablename SET UNLOGGED;
執(zhí)行批量數(shù)據(jù)導(dǎo)入
ALTER TABLE tablename LOGGED;

優(yōu)點(diǎn):
導(dǎo)入信息不記錄WAL日志,極大減少io,提升導(dǎo)入速度。
缺點(diǎn):
1.在replication環(huán)境下,表無(wú)法設(shè)置為UNLOGGED模式。
2.導(dǎo)入過(guò)程一旦出現(xiàn)停電死機(jī)等會(huì)導(dǎo)致數(shù)據(jù)庫(kù)不能干凈關(guān)庫(kù)的情況,數(shù)據(jù)庫(kù)中所有UNLOGGED表的數(shù)據(jù)將丟失。

方法3:重建索引。

導(dǎo)入數(shù)據(jù)之前先刪除相關(guān)表上的索引,導(dǎo)入完成后重新創(chuàng)建之。

DROP INDEX indexname;
執(zhí)行批量數(shù)據(jù)導(dǎo)入
CREATE INDEX ...;

查詢表上索引定義的方法

select * from pg_indexes where tablename ='tablename' and schemaname = 'schemaname';

方法4:重建外鍵。

導(dǎo)入數(shù)據(jù)之前先刪除相關(guān)表上的外鍵,導(dǎo)入完成后重新創(chuàng)建之。

ALTER TABLE ...
 DROP CONSTRAINT ... ;
執(zhí)行批量數(shù)據(jù)導(dǎo)入
ALTER TABLE ...
 ADD CONSTRAINT ... 
 FOREIGN KEY ...
 REFERENCES ...; 

相關(guān)信息可查詢pg_constraint。

方法5:停用觸發(fā)器

導(dǎo)入數(shù)據(jù)之前先DISABLE掉相關(guān)表上的觸發(fā)器,導(dǎo)入完成后重新ENABLE之。

ALTER TABLE tablename DISABLE TRIGGER ALL; 
執(zhí)行批量數(shù)據(jù)導(dǎo)入
ALTER TABLE tablename ENABLE TRIGGER ALL;

相關(guān)信息可查詢pg_trigger。

方法6:insert改copy

COPY針對(duì)批量數(shù)據(jù)加載進(jìn)行了優(yōu)化。

COPY ... FROM 'xxx';

方法7:?jiǎn)沃礽nsert改多值insert

減少sql解析的時(shí)間。

方法8:insert改PREPARE

通過(guò)使用PREPARE預(yù)備語(yǔ)句,降低解析消耗。

PREPARE fooplan (int, text, bool, numeric) AS
 INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);

方法9:修改參數(shù)

增大maintenance_work_mem,增大max_wal_size。

方法10:關(guān)閉歸檔模式,降低wal日志級(jí)別。

修改archive_mode參數(shù)控制歸檔開啟和關(guān)閉。降低wal_level值為minimal來(lái)減少日志信息記錄。
此法需要重啟數(shù)據(jù)庫(kù),需要規(guī)劃停機(jī)時(shí)間。此外如有replication備庫(kù),還需考慮對(duì)其影響。

到此這篇關(guān)于PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法的文章就介紹到這了,更多相關(guān)PostgreSQL批量數(shù)據(jù)導(dǎo)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 如何將excel表格數(shù)據(jù)導(dǎo)入postgresql數(shù)據(jù)庫(kù)
  • postgresql 導(dǎo)入數(shù)據(jù)庫(kù)表并重設(shè)自增屬性的操作
  • PostgreSql 導(dǎo)入導(dǎo)出sql文件格式的表數(shù)據(jù)實(shí)例
  • sqoop讀取postgresql數(shù)據(jù)庫(kù)表格導(dǎo)入到hdfs中的實(shí)現(xiàn)
  • postgresql 實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入導(dǎo)出
  • 使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例

標(biāo)簽:臨滄 那曲 齊齊哈爾 荊州 泰州 通化 海北 阜陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法》,本文關(guān)鍵詞  詳解,PostgreSQL,提升,批量,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解PostgreSQL提升批量數(shù)據(jù)導(dǎo)入性能的n種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    靖州| 德州市| 平谷区| 肇源县| 文安县| 调兵山市| 尼玛县| 定州市| 军事| 若尔盖县| 静乐县| 遂宁市| 包头市| 临沭县| 咸阳市| 富锦市| 太白县| 玉溪市| 介休市| 温州市| 宁远县| 合川市| 巴塘县| 邯郸市| 富阳市| 东辽县| 永和县| 正定县| 旬阳县| 定结县| 永安市| 古交市| 天门市| 兴和县| 伊吾县| 东阿县| 河间市| 雷州市| 万州区| 翼城县| 丰镇市|