簡介
在過去一年半的時間裡,在 標準TPC-C基準方面有很多DB2 for LUW 活動,這個基準常用於測試線上交易處理環境中的效能。其結果跨度很大,在具備通常配置的機器上,它可能是非常小的數字,在那些家庭和工作中不多見的特殊配置上,又可能是非常大的數字。
雖然填充資料庫模式的行的數量可能被調整到一定規模,但有一個地方仍然是相同的:SQL。在本文中,您將認識 TPC-C 基準的邏輯,理解 SQL 技術,並發現如何在實際的客戶環境中使用 SQL 技術。
為了達到這個目的,作者 Serge Rielau 這樣來組織這篇文章:首先介紹該基準的 DB 模式以及它的事務。接著,他將分析每個事務,並解釋每個事務的 SQL 特性。到本文的最後,您應該對 TPC-C 基準以及 DB2 的進階 SQL 特性,包括它們背後的機理有更好的理解。
TPC-C: 基準簡述
TPC-C 基準使用一小組事務和表來類比一家分銷企業,該企業有一個產品銷售周期。每個事務的外部模式和語義都被 正式指定。為了簡短地概述一下,並提供一個基本模式以供使用,下面給出了一個概要。 其中,表用 粗體標記,事務用 斜體 顯示:
用於該基準的資料庫主要由倉庫(warehouses)、地區(districts)、產品(items)和客戶(customers)組成。在每個 WAREHOUSE 中的 STOCK(庫存)裡有 100,000 個 ITEM。每個倉庫為 10 個 DISTRICT 服務。每個地區為 3000 名 CUSTOMER 服務,這些客戶 ORDER(訂購)新產品。 每份 ORDER(訂單)最多可以由 15 種不同產品組成,稱作 ORDER_LINE(訂購項)。在給訂單發貨之前,訂單作為一個 NEW_ORDER 進行排隊,倉庫中每種產品的庫存要進行調整……在 DELIVERY(發貨)時,要向客戶收費。在 PAYMENT(支付)時,該事務被存檔在 HISTORY(曆史)中,收入要記帳。
此外,客戶可以查問他們的 ORDER STATUS(訂單狀態),倉庫管理員可以查問訂單上所訂產品的 STOCK LEVEL(庫存水平)。
為了更切合實際,客戶容易忘記他們的客戶 ID,因此必須能夠按使用者的姓氏(last name)尋找客戶 ID,但客戶的姓可能有重複現象。而且,本地的倉庫可能無法滿足所有的訂單,這要求從遠處的倉庫發貨過來。
一個倉庫所能處理的新訂單的數量限制在每分鐘 9 到 12.86 個事務之間。這意味著,為了達到 320 萬 TpmC (NEW ORDER Transactions per minute TPC-C),至少需要藉助 256,000 多個倉庫。這意味著有 77 億 註冊客戶。因此,除非您有足夠的磁碟和一個大的保險絲,否則不要試。