NpgsqlConneciton, NpgsqlCommand都有CommandTimeout屬性值,單位為毫秒,默認(rèn)值為90秒。如果命令執(zhí)行時(shí)間超過(guò)CommandTimeout值,就會(huì)發(fā)生timeout錯(cuò)誤,即執(zhí)行時(shí)間超出設(shè)定時(shí)間。
創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),化隆網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:化隆等地區(qū)?;∽鼍W(wǎng)站價(jià)格咨詢:028-86922220
所以,解決方式就是將CommandTimeout值設(shè)置足夠大。
PostgreSQL 近幾年在全球的人氣不斷攀升,每年發(fā)布的版本都體現(xiàn)了社區(qū)的活力,9.6作為里程碑式的作品,更加有非常多的新特性加入。
例如
1. 多核并行計(jì)算
2. FDW 下推join, sort, where clause.
3. snapshot too old
4. 檢查點(diǎn)平滑fsync
5. vacuum freeze加速
6. sharding base on fdw
7. 分詞增強(qiáng),支持相鄰phrases搜索,據(jù)說(shuō)比ES用起來(lái)還爽。
8. scale-up 多核增強(qiáng), 72HT的機(jī)器tpc-b select only達(dá)到了180萬(wàn)的tps.
9. 推出等待事件統(tǒng)計(jì)信息
10. 支持多副本同步復(fù)制,滿足金融級(jí)可靠性要求
11. 聚合復(fù)用SFUNC,多個(gè)聚合如果INIT和SFUNC一致的話,可以節(jié)約非常多的運(yùn)算開(kāi)銷(xiāo)。
12. 事務(wù)idle超時(shí)機(jī)制
還有很多,可以在 release notes頁(yè)面查找
除此之外,社區(qū)開(kāi)發(fā)的一些特性也很吸引人,例如
1. rum插件,支持文本相似度查詢,效率嘛10億級(jí)別TOKEN,毫秒級(jí)響應(yīng),比搜索引擎還好用,具體見(jiàn)云棲社區(qū)的測(cè)試文章。
2. LLVM版本的PostgreSQL,對(duì)大數(shù)據(jù)量的表達(dá)式處理性能提升非常明顯。也是大數(shù)據(jù)處理慣用的手法,例如Impala。雖然PostgreSQL的定位是OLTP,但不代表它不能處理OLAP的請(qǐng)求,而且Gartner去年就提出了HTAP的數(shù)據(jù)庫(kù)概念,指即能處理TP有能處理AP的數(shù)據(jù)庫(kù)產(chǎn)品,PostgreSQL的特性可見(jiàn)一斑。
3. 10.0版本已經(jīng)加入的聚合算子下推,你是不是開(kāi)始浮想聯(lián)翩了呢?
更多的插件可以到github , pgxn.org , pgfoundry ,
引發(fā) idle in transaction 的原因很多,例如應(yīng)用代碼中忘記關(guān)閉已開(kāi)啟的事務(wù),或者系統(tǒng)中存在僵死進(jìn)程等,曾經(jīng)看到過(guò)某個(gè)庫(kù)中的 idle in transaction 進(jìn)程存在一年有余,這類(lèi)進(jìn)程嚴(yán)重危害了數(shù)據(jù)庫(kù)的安全,例如它會(huì)阻止 VACUUM 進(jìn)程回收記錄,造成表數(shù)據(jù)膨脹,同時(shí)它有可能引起整個(gè) PostgreSQL 數(shù)據(jù)庫(kù) Transaction ID Wraparound 的風(fēng)險(xiǎn)。
--修改 postgresql.conf 以下參數(shù)
idle_in_transaction_session_timeout = 20000
備注:參數(shù)單位為毫秒,這里設(shè)置 idle in transaction 超時(shí)空閑事務(wù)時(shí)間為 20 秒。
--重載配置文件
[pg96@db1 pg_root]$ pg_ctl reload
server signaled
備注:此參數(shù)修改后對(duì)當(dāng)前連接依然生效,應(yīng)用不需要重連即能生效。
--開(kāi)啟會(huì)話一:模擬一個(gè)事務(wù)
[pg96@db1 ~]$ psql francs francs
psql (9.6beta1)
Type "help" for help.
francs= begin;
BEGIN
francs= select 1;
?column?
----------
1
(1 row)
事務(wù)中,不提交也不回滾。
postgresql中可以使用pg_dump來(lái)備份數(shù)據(jù)庫(kù)。pg_dump是用于備份PostgreSQL數(shù)據(jù)庫(kù)的工具。它可以在數(shù)據(jù)庫(kù)正在使用的時(shí)候進(jìn)行完整一致的備份,并不阻塞其它用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。
用法:
pg_dump [選項(xiàng)]... [數(shù)據(jù)庫(kù)名字]
一般選項(xiàng):
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)
-v, --verbose 詳細(xì)模式
-Z, --compress=0-9 被壓縮格式的壓縮級(jí)別
--lock-wait-timeout=TIMEOUT 在等待表鎖超時(shí)后操作失敗
--help 顯示此幫助信息, 然后退出
--versoin 輸出版本信息, 然后退出
示例:
備份數(shù)據(jù)庫(kù),指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
開(kāi)始-運(yùn)行-cmd 彈出dos控制臺(tái);然后 在控制臺(tái)里,進(jìn)入PostgreSQL安裝目錄bin下:
cd C:Program FilesPostgreSQL9.0bin
最后執(zhí)行備份指令:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
指令解釋?zhuān)?/p>
pg_dump 是備份數(shù)據(jù)庫(kù)指令,164.82.233.54是數(shù)據(jù)庫(kù)的ip地址(必須保證數(shù)據(jù)庫(kù)允許外部訪問(wèn)的權(quán)限哦~),當(dāng)然本地的數(shù)據(jù)庫(kù)ip寫(xiě) localhost;
postgres 是數(shù)據(jù)庫(kù)的用戶名;databasename 是數(shù)據(jù)庫(kù)名。
意思是導(dǎo)出到C:databasename.bak文件里,如果沒(méi)有寫(xiě)路徑,單單寫(xiě)databasename.bak文件名,那么備份文件會(huì)保存在C: Program FilesPostgreSQL9.0bin 文件夾里。
推薦學(xué)習(xí)《Python教程》。