好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > postgres 使用存儲過程批量插入數據的操作

postgres 使用存儲過程批量插入數據的操作

熱門標簽:電銷機器人能補救房產中介嗎 電話機器人怎么換人工座席 廣州電銷機器人公司招聘 400電話申請客服 移動外呼系統模擬題 濟南外呼網絡電話線路 天津開發區地圖標注app 江蘇400電話辦理官方 地圖標注要花多少錢

參考官方文檔

create or replace function creatData2() returns 
boolean AS
$BODY$
declare ii integer;
 begin
 II:=1;
 FOR ii IN 1..10000000 LOOP
 INSERT INTO ipm_model_history_data (res_model, res_id) VALUES (116, ii);
 end loop;
 return true;
 end;
$BODY$
LANGUAGE plpgsql;
select * from creatData2() as tab;

插入1千萬條數據耗時610s,當然字段不多的情況下。

補充:Postgresql存儲過程--更新或者插入數據

要記錄某一時段機器CPU、內存、硬盤的信息,展示的時間粒度為分鐘,但是為了精確,輸入數據源的時間粒度為6s。這個統計過程可以在應用層做好,每分鐘插入一次,也可以在數據庫層寫個存儲過程來完成,根據傳入數據的時間來判斷是更新數據庫舊數據還是插入新數據。

同時,這些數據只需要保留一周,更老的數據需要被刪除。刪除動作可以每天定時執行一次,也可以寫在存儲過程中每次檢查一下。

考慮到性能在此時沒什么太大約束,而后面存儲過程的接口方式更漂亮些,不用應用層去關心數據到底組織成什么樣,因此實現了一個如下:

Postgresql V8.3
CREATE OR REPLACE FUNCTION insert_host_status(_log_date timestamp without time zone, _host inet, _cpu integer, _mem integer, _disk integer)
 RETURNS void AS
$BODY$
DECLARE
  new_start timestamp without time zone;
  current_start timestamp without time zone;
  c_id integer;
  c_log_date timestamp without time zone;
  c_cpu integer;
  c_mem integer;
  c_disk integer;
  c_count integer;
  date_span interval;
BEGIN
  -- insert or update
  SELECT id, log_date, cpu, mem, disk, count INTO c_id, c_log_date, c_cpu, c_mem, c_disk, c_count FROM host_status_byminute WHERE host=_host ORDER BY id DESC limit 1;
  SELECT timestamp_mi(_log_date, c_log_date) INTO date_span;
  IF date_span >= '00:00:60' OR c_id IS NULL THEN
    INSERT INTO host_status_byminute (log_date, host, cpu, mem, disk, count) values (_log_date, _host, _cpu, _mem, _disk, 1);
  ELSIF date_span >= '-00:00:60' THEN
    c_mem := ((c_mem * c_count) + _mem)/(c_count + 1);
    c_cpu := ((c_cpu * c_count) + _cpu)/(c_count + 1);
    c_disk := ((c_disk * c_count) + _disk)/(c_count + 1);
    c_count := c_count + 1;
    UPDATE host_status_byminute SET mem=c_mem, cpu=c_cpu, disk=c_disk, count=c_count WHERE id=c_id;
  END IF;
  -- delete old data
  SELECT date_mii(date(now()), 6) INTO new_start;
  SELECT date(log_date) from host_status_byminute limit 1 INTO current_start; -- omit a bug happened when date is disordered.
  IF new_start > current_start THEN
    DELETE FROM host_status_byminute where log_date  new_start;
  END IF;
END;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE
 COST 100;
ALTER FUNCTION insert_host_status(timestamp without time zone, inet, integer, integer, integer) OWNER TO dbuser_test;

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 使用postgresql 模擬批量數據插入的案例
  • PostgreSQL upsert(插入更新)數據的操作詳解
  • 使用Postgresql 實現快速插入測試數據
  • postgreSQL數據庫 實現向表中快速插入1000000條數據
  • Python隨機生成數據后插入到PostgreSQL

標簽:海西 辛集 濮陽 榆林 杭州 昭通 溫州 寶雞

巨人網絡通訊聲明:本文標題《postgres 使用存儲過程批量插入數據的操作》,本文關鍵詞  postgres,使用,存儲,過程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《postgres 使用存儲過程批量插入數據的操作》相關的同類信息!
  • 本頁收集關于postgres 使用存儲過程批量插入數據的操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 窝窝午夜色视频国产精品东北| 92看午夜福利1000集| 性欧洲黑人巨大videos| 91蝌蚪丨人妻丨丝袜| 啊叫大点声欠cao的sao货| 又大又长又粗又硬的视频| 中国女人真人做爰免费视频| 邻居夫妇的交换4| 一区国产视频| 阴茎插入阴道视频| jk制服丝袜白浆娇喘| 宫交捣得又狠又深H| 日韩怡春院| 国产精品福利无圣光在线一区| 又大又粗又长又硬的机巴| 国产精品爽爽久久久天天躁电影 | 欧美jizz8性欧美| 男人用jj捅女人的jj30分钟 | 日韩久操| 在线免费影视| 蜜臀久久精品久久久久酒店 | 交换配乱淫粗大东北大坑性事| 91亚洲精品福利在线播放| 我在逃生游戏里被啪了| 欧美AV大毛毛片免费看| 午夜巴塞罗那| 08年阿娇无删gif| 久久国产欧美日韩精品| 天天看无码AV精品97| 日韩午夜欧美精品一二三四区 | 大尺度床性视频带叫床60分钟 | 亲胸揉胸膜下刺激视频小软件下载| 91超薄丝袜肉丝一区二区| 黄色在线免费观看网址| 按在电竞椅上C| 男人疯狂桶爽女人出白浆| 骚死你影院| 男生同性视频twink tube | 日日夜夜天天干干| japan日韩xxxx69hd| 一二三四在线观看免费高清中文在线观看|