Informix技巧4則
本文內(nèi)容均來(lái)自網(wǎng)絡(luò),這里僅是組織整理,方便記憶和查閱,以及供更多的人學(xué)習(xí),如果有興趣可到文中的“出處”查看原文。
1. UPDATE STATISTICS FOR TABLE tablename( 出處:ChinaUnix )
???? Informix?數(shù)據(jù)庫(kù)服務(wù)器中的優(yōu)化器為SQL語(yǔ)句的查詢提供最有效的策略,估計(jì)查詢策略的代價(jià)需要準(zhǔn)確的統(tǒng)計(jì)信息(包括:記錄數(shù),表空間的頁(yè)數(shù),記錄長(zhǎng)度,字段不同值個(gè)數(shù),索引的層數(shù),索引葉結(jié)點(diǎn)數(shù)目,索引是升序還是降序或聚類索引),但是由于維護(hù)這些統(tǒng)計(jì)信息的代價(jià)是很大的,所以informix系統(tǒng)不是在每次修改時(shí)對(duì)統(tǒng)計(jì)值更新.因此當(dāng)我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行了大量的數(shù)據(jù)庫(kù)操作(刪除)時(shí),如果想提高查詢的效率,最好手動(dòng)的更新系統(tǒng)表的統(tǒng)計(jì)信息,命令格式如下:
UPDATE
?
STATISTICS
?
FOR
?
TABLE
?tablename
2." could not do a physical order read to fetch next row" ( 出處:JavaYou )
????? 在大數(shù)據(jù)量操作數(shù)據(jù)庫(kù)的時(shí)候,容易出現(xiàn)異常:"could not do a physical order read to fetch next row",這是 是因?yàn)镮nformix默認(rèn)鎖等待時(shí)間為0,即在操作(update、delete等)數(shù)據(jù)庫(kù)的時(shí)候,如遇到其他操作也在使用同一張表的情況時(shí),則不等待和返回異常。
?????? 最簡(jiǎn)單的解決方法就是每次在獲取新的(注意是新的,原有的連接也無(wú)妨,但影響效率)數(shù)據(jù)庫(kù)連接時(shí),首先執(zhí)行設(shè)置連接的鎖等待時(shí)間的Sql:
SET
?LOCK?MODE?
TO
?WAIT?
10
??
--
意思是設(shè)置鎖等待時(shí)間為10ms
3."DBSERVERNAME不在sqlhosts文件中 " ( 出處:JavaYou )
????? 在Windows下如果碰到問(wèn)題:當(dāng)初始化數(shù)據(jù)庫(kù)或者做其它操作的時(shí)候提示DBSERVERNAME不在sqlhosts文件中,事實(shí)上Windows操作系統(tǒng)的Informix是不需要sqlhosts文件的,該文件僅存于UNIX操作系統(tǒng)。
?????? 解決辦法是:檢查這樣一個(gè)服務(wù)是否啟動(dòng),該服務(wù)的名稱是:Remote Registry Service,必須保證該服務(wù)啟動(dòng)。因?yàn)镮nformix數(shù)據(jù)庫(kù)很多配置信息都存放在注冊(cè)表中,如果沒(méi)有啟動(dòng)該服務(wù),則數(shù)據(jù)庫(kù)無(wú)法讀取注冊(cè)表的信息。
4.導(dǎo)入導(dǎo)出
[導(dǎo)出]
UNLOAD?
TO
?dataFile.dmp?
SELECT
?
*
?
FROM
?tablename
[導(dǎo)入]
LOAD
?
FROM
?dataFile.dmp?
INSERT
?
INTO
?tablename
1. UPDATE STATISTICS FOR TABLE tablename( 出處:ChinaUnix )
???? Informix?數(shù)據(jù)庫(kù)服務(wù)器中的優(yōu)化器為SQL語(yǔ)句的查詢提供最有效的策略,估計(jì)查詢策略的代價(jià)需要準(zhǔn)確的統(tǒng)計(jì)信息(包括:記錄數(shù),表空間的頁(yè)數(shù),記錄長(zhǎng)度,字段不同值個(gè)數(shù),索引的層數(shù),索引葉結(jié)點(diǎn)數(shù)目,索引是升序還是降序或聚類索引),但是由于維護(hù)這些統(tǒng)計(jì)信息的代價(jià)是很大的,所以informix系統(tǒng)不是在每次修改時(shí)對(duì)統(tǒng)計(jì)值更新.因此當(dāng)我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行了大量的數(shù)據(jù)庫(kù)操作(刪除)時(shí),如果想提高查詢的效率,最好手動(dòng)的更新系統(tǒng)表的統(tǒng)計(jì)信息,命令格式如下:

2." could not do a physical order read to fetch next row" ( 出處:JavaYou )
????? 在大數(shù)據(jù)量操作數(shù)據(jù)庫(kù)的時(shí)候,容易出現(xiàn)異常:"could not do a physical order read to fetch next row",這是 是因?yàn)镮nformix默認(rèn)鎖等待時(shí)間為0,即在操作(update、delete等)數(shù)據(jù)庫(kù)的時(shí)候,如遇到其他操作也在使用同一張表的情況時(shí),則不等待和返回異常。
?????? 最簡(jiǎn)單的解決方法就是每次在獲取新的(注意是新的,原有的連接也無(wú)妨,但影響效率)數(shù)據(jù)庫(kù)連接時(shí),首先執(zhí)行設(shè)置連接的鎖等待時(shí)間的Sql:

3."DBSERVERNAME不在sqlhosts文件中 " ( 出處:JavaYou )
????? 在Windows下如果碰到問(wèn)題:當(dāng)初始化數(shù)據(jù)庫(kù)或者做其它操作的時(shí)候提示DBSERVERNAME不在sqlhosts文件中,事實(shí)上Windows操作系統(tǒng)的Informix是不需要sqlhosts文件的,該文件僅存于UNIX操作系統(tǒng)。
?????? 解決辦法是:檢查這樣一個(gè)服務(wù)是否啟動(dòng),該服務(wù)的名稱是:Remote Registry Service,必須保證該服務(wù)啟動(dòng)。因?yàn)镮nformix數(shù)據(jù)庫(kù)很多配置信息都存放在注冊(cè)表中,如果沒(méi)有啟動(dòng)該服務(wù),則數(shù)據(jù)庫(kù)無(wú)法讀取注冊(cè)表的信息。
4.導(dǎo)入導(dǎo)出
[導(dǎo)出]

[導(dǎo)入]

posted on 2006-07-06 16:05 zJun's帛羅閣 閱讀(1871) 評(píng)論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫(kù)