在puber上看到的幾道面試題列舉如下:
1、如何知道資料庫目前正在執行的事務有多少,以當前時間點來說
select * from v$transaction where addr in (select taddr from v$session where status='active' )
2.如何知道資料庫目前已結束,未提交的事務有多少,以當前時間點來說
select * from v$transaction where addr in (select taddr from v$session where status='inactive' )
3、請列舉出發生了鎖的爭用,但是系統不會HANG住,以報錯退出的例子(請列舉不少於三個)
a. ddl+ddl
b.ddl(非online)+dml
c. update全表+select * from table for update nowait;
5、update 無條件全表, select count(*) 無條件全表,請考慮是否有最佳化的餘地
採用update 分批提交
select count(*) 在非空欄位上加索引 ,走index fast full scan
要是不加的走全表掃描,速度慢
測試如下:
SQL> select count(*) from tb_game_bet_log;
COUNT(*)
----------
43319931
Elapsed: 00:01:23.00
SQL> alter table TB_GAME_BET_LOG
2 add constraint pk_tb_game_bet_log primary key (ID);
Table altered.
Elapsed: 00:11:45.03
SQL> select count(*) from tb_game_bet_log;
COUNT(*)
----------
43319931
Elapsed: 00:00:13.05
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=3 Card=1)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'PK_TB_GAME_BET_LOG' (UNIQUE)
(Cost=3 Card=43389931)
Statistics
----------------------------------------------------------
361 recursive calls
0 db block gets
121020 consistent gets
120707 physical reads
0 redo size
310 bytes sent via SQL*Net to client
426 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
8 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=22524 Card=1)
1 0 SORT (AGGREGATE)
2 1 PARTITION RANGE (ALL)
3 2 TABLE ACCESS (FULL) OF 'TB_GAME_BET_LOG' (Cost=22524 C
ard=43389931)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
581845 consistent gets
367827 physical reads
0 redo size
310 bytes sent via SQL*Net to client
426 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> alter table TB_GAME_BET_LOG
2 add constraint pk_tb_game_bet_log primary key (ID);
Table altered.
Elapsed: 00:11:45.03
SQL> select count(*) from tb_game_bet_log;
COUNT(*)
----------
43319931
Elapsed: 00:00:13.05
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=3 Card=1)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'PK_TB_GAME_BET_LOG' (UNIQUE)
(Cost=3 Card=43389931)
Statistics
----------------------------------------------------------
361 recursive calls
0 db block gets
121020 consistent gets
120707 physical reads
0 redo size
310 bytes sent via SQL*Net to client
426 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
8 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
由1分多鐘降到13秒
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-791/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 這幾道Java集合框架面試題在面試中幾乎必問Java框架面試題
- 談談OKHttp的幾道面試題HTTP面試題
- 75 道 BAJT 高階 Java 面試題,你能答上幾道?Java面試題
- 75 道 BAJT 中高階 Java 面試題,你能答上幾道?Java面試題
- 幾道和「堆疊、佇列」有關的面試演算法題佇列面試演算法
- 關於棧的幾道面試題目面試題
- 面試中常見的幾道智力題 來看看你會做幾道(2)?面試
- 面試必備的13道可以舉一反三的Vue面試題Vue面試題
- 幾道前端面試題小記前端面試題
- 分享幾道我們面試前端的“真題”面試前端
- 【Java】幾道常見的秋招面試題Java面試題
- 【Java】幾道讓你拿offer的面試題Java面試題
- 技術面試中常見的幾道智力題 來看看你會做幾道?面試
- js非同步程式設計面試題你能答上來幾道JS非同步程式設計面試題
- 幾道高階前端面試題解析前端面試題
- 從幾道面試題看物件的初始化面試題物件
- 面試你之前,我希望在簡歷上看到這些!面試
- 熟悉這幾道 Redis 高頻面試題,面試不用愁Redis面試題
- 一道遞迴陣列面試題遞迴陣列面試題
- 十幾道含答案的大廠面試題總結面試題
- 幾道特別難搞的資料庫面試題資料庫面試題
- 27道Redis精選面試題,你會做幾題?Redis面試題
- 面試現場簡單幾道java演算法題, 你能寫出幾道?面試Java演算法
- 幾道和雜湊(雜湊)表有關的面試題面試題
- 這些javascript面試題,你做對了幾道?JavaScript面試題
- 【Java面試】Java面試題基礎系列212道(上)Java面試題
- 10道網路安全基礎面試題,你答對了幾道?面試題
- Evan Killham:列舉玩家在休閒遊戲中的幾個作弊技巧遊戲
- 【web前端面試題整理05】做幾道前端面試題休息休息吧Web前端面試題
- 看到piner的面試題:如何在7*24業務上增加大表約束面試題
- Java面試系列:Java面試題基礎系列228道(上)Java面試題
- 大廠面試常見的幾道SQL題,看你能答嗎?面試SQL
- Java訊息佇列三道面試題詳解!Java佇列面試題
- 10道Linux常見面試題,你知道幾個?Linux面試題
- 求助,這幾道面試題有些我回答不出來了面試題
- vue面試題:列舉說明vue的模板語法和常用指令?Vue面試題
- 想進BAT,京東,美團,面試之前刷幾百道面試題真的有用嗎?BAT面試題
- 分享100 道 Linux 常見面試題(上)Linux面試題