乙個沒有索引引起的問題

2021-05-22 16:26:03 字數 1386 閱讀 8168

這個案例說來也很簡單。話說我們公司舊版本的

mediation

系統每天都需要從各個

network element(ne

)的伺服器上採集

cdr,採集程式一般都是用

expect

寫的,其實就是

ftp到對方的機器上拷貝檔案過來。

ne裡的

cdr一般不會輕易做

house keep

ftp登入之後,首先會使用

ls看上去天衣無縫吧。誰知道某一天,問題來了。大家知道,

ftp是有超時設定的,而採集程式

ftpftp

[25.05 10:34:05] step 001 log      sql> ftp> bin

[25.05 10:34:05] step 001 log      not connected.

[25.05 10:34:05] step 001 info     ftp_client mo_bg-cdr_2010-05-25t000932.log.gz start copying

[25.05 10:34:05] step 001 log      get cdr_2010-05-25t000932.log.gz /usr/users/nmds/amd/arm/input/raw/mo_bg1/tmp-mo_bg-cdr_2010-05-25t000932.log.gz-tmp

[25.05 10:34:05] step 001 log      not connected.

還好日誌上有時間戳,記錄了採集程式從登入成功到真正開始傳輸,足足等待了超過

5分鐘,說明當中的查詢比較過程太慢了。翻看源程式,發現執行的

sql是:

select sysid from smt_ftp_files where sysid ='$sysid' and filename = '$filename';

不必多說,這個查詢應該在

filename

或者sysid

欄位上有索引,才會快。進入

oracle

2sql> select index_name from all_indexes where table_name='smt_ftp_files';

no rows selected

sql> create index idx_filename on smt_ftp_files(filename);

index created.

sql> select index_name from all_indexes where table_name='smt_ftp_files';

index_name

------------------------------

idx_filename

乙個sql引起的丟錶問題

背景 乙個已經執行了一段時間的老系統線上存在這種業務邏輯 start transaction drop tables if.a backup drop tables if.a tmp create table a tmp like a load into a tmp rename table a a...

乙個索引引發的問題

215 上了乙個大表的組合索引,引發了查詢sql的執行計畫混亂,最終cpu充到100 業務系統掛掉,庫也幾乎宕掉。1,為什麼建了索引後,oracle執行計畫會亂掉,而且選擇了乙個最慢的執行計畫?dba答覆 表關聯!關聯表越多,oracle選擇執行計畫出錯的概率變大!如何防止此類事件 上索引之前,先固...

乙個指標引起的問題,尋求高人指點

自己寫的一段測試 如下 include include int getxmltagvalue2 char pdata,char ptag,char value phead j ptail phead while ptail while phead ptail printf d n j return ...