問題描述:
資料庫操作中,需要對錶頻繁插入資料,但發現插入效率不高。
解決思路:
將資料快取在伺服器上,積攢到一定條數後批處理傳送到資料庫,在插入時考慮併發和索引對插入效率的影響。
測試結果:
有自增主鍵 有自增無索引 無自增無索引
單錶單執行緒 24113/s 24448/s 24752/s
單錶5執行緒 7611/s 104865/s 104340/s
單錶10執行緒 5756/s 110717/s 105719/s
10表10執行緒 109878/s 109878/s 113199/s
結論:1. 在對有索引的表上應減少併發以提高插入效率。
2. 對無索引的表,適當併發能提高插入效率,過高或過低的併發會導致插入效率低下。
3. 自增健對插入影響較小可忽略。
4. 可以考慮將表拆分來提高插入效率。
5. 減少或避免在插入頻繁但查詢較少的表上建立索引。
其他相關建議:
1. 開啟磁碟快取能提高磁碟處理能力,從而提高插入效率,降低磁碟佇列。
2. 修改資料庫檔案自動增長的增量,避免資料庫檔案頻繁增長。
理論上 sql server 自增列存在乙個每秒最大生成數,但該數很難使用當前硬體達到
T SQL 插入並返回自增ID
sql server 2000中,有三個比較類似的功能 他們分別是 scope identity ident current 和 identity,它們都返回插入到 identity 列中的值。ident current 返回為任何會話和任何作用域中的特定表最後生成的標識值。ident curren...
T SQL 插入並返回自增ID
sql server 2000中,有三個比較類似的功能 他們分別是 scope identity ident current 和 identity,它們都返回插入到 identity 列中的值。ident current 返回為任何會話和任何作用域中的特定表最後生成的標識值。ident curren...
T SQL 插入並返回自增ID
sql server 2000中,有三個比較類似的功能 他們分別是 scope identity ident current 和 identity,它們都返回插入到 identity 列中的值。ident current 返回為任何會話和任何作用域中的特定表最後生成的標識值。ident curren...