或許你會問,為什么要準備這些鋪底數據?這些數據不是我們的實際生產環境的數據,那為什么要花時間去準備如此大量的數據呢?
答案是,系統在有鋪底數據和沒有鋪底數據的情況下,性能會有很大的差異。那為什么會這樣呢?
首先,如果沒有那些鋪底數據,那么本來為一張表建立了一個索引,當系統的數據量很小的時候,數據庫就有可能造成全表掃描,而不走索引掃描,這樣就會造成系統的性能降低。
如果數據量很小的話,我們不知道進行一次查詢時候的 SQL 語句究竟是哪種執行路徑方案。(數據庫有自動根據 SQL 語句算出一條自認為最優化的路徑的功能。譬如 DB2 的 ACCESS PATH。ACCESS PATH 會隨著數據量的多少的變化而變化的。一旦系統比較龐大,在日積月累中,數據量會越來越大的。所以要準備一定數量的數據,讓 ACCESS PATH 保持相對穩定。
1.3 沒有鋪底數據有可能造成系統發生數據庫的死鎖
如果數據量少,數據庫為了優化有的時候就不用 INDEX 掃描,而采用全表掃描,這樣造成整表被鎖,導致死鎖,而數據量大了以后數據庫會進行 INDEX 掃描,所以不會瑣住整個表。所以在有些情況下在系統上線時準備一些無用的數據放在表中,讓數據庫不會導致全表掃描!雖然有的時候可以通過改變鎖的策略去解決這個問題,但是如果存在風險,在上線系統中就要避免。
1.4 鋪底數據使得系統性能更加真實 , 更符合生產環境的真實情況
在數據庫里面存入鋪底數據,系統從一開始上線的時候,就已有了一個比較穩定的環境。如果沒有鋪底數據,那系統的環境可能隨時面臨著不穩定的因素:如性能陡變,數據庫異常 ( 資源池不夠用,數據庫死鎖,數據庫全表掃描等等 ),響應時間突然下降。所以準備鋪底數據,不但對性能測試意味深遠,而且對即將上線的生產環境也是至關重要的。試想在銀行系統中,如果不準備鋪底數據,一旦系統上線的時候發生了問題,那么銀行會損失多少客戶!
1.5 準備鋪底數據要則
準備鋪底數據主要有以下幾點原則:
準備的數據量大。簲祿䦷熘械臄祿恐灰葍却娲笊先舾杀,結果就差不多了。
數據在準備的時候,要保持原表的約束關系。
每張表的數據量要符合真實情況(對此點要求可能比較高 , 通常的做法是估算一下實際的情況)。
介紹了這些的原則,如何在實際操作中創建鋪底數據呢?后面的第 2 章將結合上述的三條原則,具體講述如何高性能地準備鋪地數據
文章來源于領測軟件測試網 http://www.kjueaiud.com/