【特點】1、
使用這種提示因為系統不去查詢freelist鍊錶中的空閒塊,直接在高水標記位以上插入資料,因此速度比較快。但若是對於經常
delete
的表,浪費磁碟空間太大! 2
、它不記錄日誌,因此一旦插入的資料在沒有儲存回磁碟的時候發生掉電之類的狀況插入的資料不能重做。 3
、後,需要馬上提交,否則會影響下一次修改失敗(
insert,update,delete)
在oracle database 10g enterprise edition release 10.2.0.1.0中,如果插入操作的語法是
insert
into *** values(***);
那麼系統加的是row exclusive鎖,也就是正常insert所加的行級鎖,但是如果插入操作的語法是
insert
into *** select *** from ***;
那麼系統加的是exclusive鎖,相當於表級鎖,加表級鎖意味著在本會話沒有commit的時候其他任何會話都不能再進行insert,update,delete操作
【相關sql
語句】
檢查資料庫歸檔模式(
noarchivelog
、archivelog):
archive log list
或者select log_mode from v$database;
檢視當前
redo
日誌大小:
select name,value,class from v$sysstat where name='redo size';
或者開啟統計,這個更準確地統計當前語句生成的
redo
,推薦使用
set autotrace traceonly statistics
普通插入方式:
insert into t select * from dba_objects;
插入方式:
插入方式:
【測試結論】
1、無論歸檔模式、還是非歸檔模式,
插入方式效果最好,生成最小的
redo日誌
2、非歸檔模式下,
插入模式效果不錯 3
、歸檔模式下,
插入模式沒有效果
【測試例子】
【我的測試】
從以下對比可以看出,增加
hint
方法,速度增加4倍
。 還真的有這麼神,都是
180萬行的表拷貝,我的測試如下:
insert into p_nbsc_ho
1select * from p_nbsc_ho
(消耗時間
73分鐘)
(消耗時間
7分鐘)
弊端:i如果不
commit
的話,會對該錶加
6級鎖,也就是說,
即使此時
select
這個表都會報錯。 因此
提示的語句首先不能是業務表,其次要盡快提交
commit
,所以一般情況不敢用
hint了。
sql 插入效能
以下內容 摘自此貼 開發的專案中要插入大量的資料到資料庫中,差不多每秒8000條記錄以上.共有4個字段,每條記錄不超過300位元組.以前的系統是在linux下實現的,用的mysql資料庫,普通的insert語句,每秒可以插入10000條記錄左右.可我使用sql server在win2003下,用普通...
Redis插入效能測試
1 測試環境 cpu dualcore e5800 x2 3.2g memory 4g os suse linux enterprise server 11 x86 64 client jedis 2 單值插入 insert key 1000000 10000051 vaue 1000000 100...
關於innodb插入效能
根據某的測試,innodb在以下條件下插入效能是穩定的 mysql innodb 在滿足以下條件下,千萬級別的表 插入速度 效能穩定。不需要經常修改表結構 not always alter table,alter column or alter index 沒有經常性的 bulk insert 需求...