成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五個細節入手 幫助提高數據插入效率

運維 數據庫運維
數據庫技術近年來實現了高速發展,技術得到了很大程度的提高,本文主要從提高數據庫插入效率講起。

導讀:插入數據,是MySQL數據庫的基本任務,不過不要小看這個插入數據的動作,在數據庫性能優化上,可以在這上面做很大的文章。如果利用MySQL作為一些即時信息化管理軟件的后臺數據庫,如ERP系統。由于其數據插入的作業非常頻繁,而且對性能的要求也比較高。此時數據庫管理員就需要采取措施來提高數據插入的效率。針對這塊內容,筆者認為數據庫工程師在應用程序與數據庫設計時,需要注意如下幾個細節問題。

  細節一:同時插入多行記錄時,宜采用一條Insert語句

  在數據插入時,往往需要同時往一個表中插入多條數據。如以ERP系統的采購訂單為例。用戶在前臺客戶端錄入采購訂單時,有可能需要向同一個供應商同時采購多個原材料。此時在數據庫中,就需要往一個表格中同時插入多條記錄。在插入數據時,可以通過兩個方式實現。一是采用多條Insert語句,每個Insert語句插入一條記錄。另外一種方式是只采用一條Insert語句,插入多條語句。采取這兩種方式,有什么差異呢?

  從語言編寫的角度看,第一種方式比較清楚明了。但是從數據插入速度的角度來看,第二種方式性能比較好。特別是一次性插入一兩百條記錄時,兩者所需要的時間會相差一倍以上。如下圖所示,就是使用一條Insert語句插入多條記錄的舉例。

 

  總之在數據插入時,需要注意使用帶有多個值列表的Insert語句一次插入多行記錄要比使用一個單行插入語句快很多。而且隨著行數的增加,這個差異會越來越大。在數據庫設計時,如果有設計到同時插入多條數據的紀錄,如通過客戶端導入基礎數據、通過前置單據自動生成相關單據,這些作業都會遇到向某個表中一次性插入多條記錄的情況。此時從提高數據庫性能的角度考慮,筆者建議采用一個Insert語句同時插入多條記錄的方式。雖然說編寫語言的時候會增加復雜程度,但是這點投資與數據庫性能優化相比而言,是值得的。

  細節二:批量插入記錄時,建立采用Load Date Infile語句

  有時候可能需要往Mysql數據庫中批量導入數據。如在ERP系統初始化過程中,需要將產品數據導入到系統中。實施顧問一般會要求用戶根據他們的格式準備好相關的數據,然后利用導入作業,將這些數據一次性導入到數據庫中。雖然這個導入作業是通過前臺客戶端來完成的,但是最終仍然是反映在數據庫中。

  針對這種批量數據的導入,數據庫又提供了兩種方式。一是上面所介紹的,采用一個Insert語句插入多行記錄的方式;另外一種就是采用Load Date Infile的方式。這兩種方式有什么差異呢?Load Date Infile顧名思義,就是從一個文件中導入數據。為此如果采用這種方式的話,用戶需要預先準備一個固定格式的文件。而Insert語句的話,沒有這個要求,其可以直接利用其他作業中獲得的數據。從這個角度講,如果插入的紀錄數比較少(如在一百條左右)或者通過系統交互來獲得數據,此時比較適合使用Insert語句。從性能的角度考慮,通常情況下使用Load Date Infile語句的方式插入數據要比使用Insert語句速度快10到20倍。為此如果插入的數據量比較多,如期初導入數據時可能會有超過上萬條的記錄,此時使用Load Date Infile的方式能夠取得比較好的性能。

  細節三:插入延遲,提高插入操作對系統的不利影響

  在某些情況下,用戶對插入數據的即時性要求可能并不是很高,此時就可以考慮通過插入延遲特性,來減少插入操作對系統資源的耗用。筆者再以ERP系統為例。在ERP系統中,有一個安全庫存管理的作業。如果啟用了這個作業的話,那么系統會在每天一個固定的時刻,分析賬上的庫存數據與安全庫存之間的關系。如果發現庫存數量低于安全庫存時,系統就會自動生成一張請購單,將差異的數據插入到后臺的數據庫表中。顯然,對于這些記錄,用戶并不需要等待數據的插入完成。如在前臺調用這個作業時,可以將這個作業放在后端執行。等到執行完畢后,再通知用戶即可。

  在遇到這種情況時,就可以使用插入延遲的功能。當數據庫工程師啟用插入延遲功能時,服務器會立刻返回,而不會在那邊等著數據插入完成。如果表中沒有被其他線程所調用的情況,那么記錄會排隊等待被插入。使用這個插入延遲特性,還能夠帶來另外一個好處。當多個作業同時往同一個表中插入數據的時候,這些進程會被記錄在同一個Block中。這就好像將多個單獨的Insert語句合并成一條Insert語句來執行,其速度會快許多。

  細節四:在插入大量數據之前,可以先將表鎖定

  在數據庫庫中,某些表只有特定的用戶才使用。而且每次使用時可能會同時插入多條數據。如在ERP系統中導入期初數據時,就會碰到這種情況。從前臺客戶端導入產品數據時,通常情況下中間會有一個過渡表。用戶可以通過這個過渡表來核對數據是否準確。如果沒有問題的話,再將其導入到產品信息表中。采取這種方式,用戶還可以查詢到有哪些記錄沒有被導入到系統中。

  由于期初數據的導入,一般是有系統管理員來完成的。此時這張過渡表只有一個用戶使用。為了提高數據插入的效率,數據庫工程師可以考慮,在插入之前先將表鎖定。這可以提高數據插入的性能。這主要是因為索引緩沖區只是在所有的插入語句完成之后才對磁盤進行一次性刷新。也就是說,有多個插入語句就會有多少次索引緩沖區刷新。為此在數據插入之前,將數據表進行鎖定,就可以大幅度的提高數據插入的效率。

  細節五:插入數據之前先對數據進行排序

  眾所周知,在對記錄進行排序時,需要耗費一定的系統資源。如果在插入數據時,就能夠考慮到排序問題,那么在后續記錄查詢時,就可以避免重新排序所造成的二次開銷。故筆者建議,在可行的情況下,在對數據插入之前先對記錄根據一定的規則進行排序。

  如在采購訂單行表中,同時插入多條語句(從物料申購單轉換為采購訂單)。在采購訂單行中插入多條記錄之前,可以根據用戶的使用習慣,如按照產品的編號進行排序。用戶在后續查詢時,就可以直接使用查詢的結果(默認情況下是根據記錄插入的先后順序來顯示結果的)。顯示時就不需要再進行一次排序作業,從而可以提高數據后續查詢的效率。

  上面筆者提到的這個些內容,其實都是插入作業中的一些細節問題。但是這些細節內容,對于提高數據庫的插入效率有很大的幫助。有時候單純的通過提高硬件配置來改善數據庫的性能,還不能夠提到這么明顯的效果。希望以上降到的內容對大家能有所幫助。
 

【編輯推薦】

  1. 五種MySQL數據庫可靠性方案的分析和比較
  2. DB2數據庫性能監控的具體步驟
  3. 復制或遷移Oracle數據庫的最簡單方法
責任編輯:迎迎 來源: it168網站
相關推薦

2013-12-27 09:04:26

園區LAN網絡效率步驟

2025-01-15 17:00:00

開發Linux命令

2021-05-24 18:10:51

物聯網智能工廠預測性維護

2016-10-28 15:52:04

數據中心數據中心效率

2023-06-06 13:47:57

插件IntelliJ編碼

2018-05-24 08:47:15

數據存儲技巧

2025-05-27 00:10:00

編程IntelliJIDEA

2019-05-05 10:11:27

數據中心效率DCIM

2013-05-16 09:11:15

系統故障故障排查

2023-09-01 07:31:41

工具工具類網站

2016-11-01 11:11:54

數據中心大數據

2021-12-27 16:09:54

Python自然語言開發

2021-02-24 09:00:00

工具開發編程

2011-05-28 08:22:57

2015-11-16 10:03:10

效率

2023-07-06 17:00:44

服務器

2022-08-26 14:41:47

Python數據科學開源

2022-09-26 23:43:26

數據可視化數據挖掘電子書

2012-10-16 11:03:03

數據中心能源效率高效

2019-08-21 08:48:49

操作系統信息安全網絡安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线观看一区二区三区 | 国产精品精品久久久 | 午夜激情免费 | 国产一区二区三区在线免费 | 不卡视频一区二区三区 | 国产精品福利视频 | 自拍中文字幕 | 视频一区欧美 | 五月天婷婷综合 | 在线一区二区国产 | 日韩欧美在线视频播放 | 九九热精品视频在线观看 | 久久精品视频9 | 中文字幕欧美一区二区 | 亚洲第一黄色网 | 欧美黑人国产人伦爽爽爽 | av网站推荐 | 亚洲一区二区三区免费视频 | 香蕉一区二区 | 特黄色一级毛片 | 91在线视频在线观看 | 国产综合精品一区二区三区 | 国产精品久久国产精品 | 视频在线亚洲 | 国产精品日产欧美久久久久 | 日韩精品区 | 婷婷狠狠| 日韩精品一区二区三区久久 | 中文在线www | 在线观看中文字幕 | 午夜色播 | 国产精品1区 | 国产一级免费视频 | 精品日本中文字幕 | 精品一二三区 | 午夜专区 | 亚洲福利在线观看 | 成人不卡| 中文字幕av网 | 91大神新作在线观看 | 亚洲欧美一区二区三区在线 |