データベースに対する負荷ツール、ベンチマークツールは世の中にたくさんあるのですが、単一テーブルに対する主キー検索しかしないものなど、CPUクロック勝負の比較的単純なものが多くを占めているようです。

关于数据库压力的测试工具、世面上有很多的基准测试工具、不仅是对单一表的主键进行检索等、单纯的CPU时钟胜负比较占大多数。

 

そこで本日は、もう少し高度なベンチマーク仕様としてのTPC-Cと、MySQL向けの簡易実装であるtpcc-mysqlをご紹介します。

今天,介绍一下稍微高级一点基准规格的tpc-c和面向MySQL简单实施的tpcc-mysql。

 

TPC-Cとは卸売業における注文・支払いなどの処理を擬似的に再現した業務モデルで、TPCという業界団体によって策定されたものです。

TPC-C是通过模拟批发业中订单.支付等的处理再现业务模型、TPC是业界团体定制的产物

 

 

9種類のテーブルに対する5種類のトランザクションがミックスされており、そのうち注文処理のスループットを測定結果として利用します。

涵盖了9个table、5种事务(transaction)、订单处理的吞吐量作为测定结果使用。

 

公式サイトで仕様書(PDF)が公開されています。

在官方网站上有公开的式样书PDF。

 

テーブル定義は以下のようになっています。ちなみにこのER図はMySQL Workbenchで出力したものです。

table的定义如下,顺便说一下这个ER图是用MySQL Workbench输出的。

f:id:sh2:20090211211130p:p_w_picpath

 

  • warehouse:倉庫です。倉庫表のレコード数は全体の規模を決めるスケールファクターとなっています。

  • warehouse表:仓库表。仓库表的记录数是决定整体规模的比例因子

  • district:配送区域です。倉庫あたり10の配送区域が存在します。

  • district表:配送区域表。每个仓库有10个配送区域。

  • customer:顧客です。配送区域あたり3,000の顧客が存在します。

  • customer表:顾客表。每个配送区域有3000名顾客。

  • hisotory:支払い履歴です。支払い履歴表は測定中にレコードが増えていきます。

  • hisotory表:支付记录表。主要是往表里insert支付记录。

  • item:商品です。商品数は10万種類で固定されています。

  • item表:商品表。固定10万种类的商品数。

  • stock:在庫です。warehouse×10万レコードあります。

  • stock表:库存表。存在warehouse乘以10万条记录

  • orders:注文です。注文表は測定中にレコードが増えていきます。

  • orders表:订单表。主要是往这个订单表里增加记录。

  • order_line:注文明細です。一度の注文で平均10個の商品を発注します。

  • order_line表:订单明细表。一个订单平均10个商品。

  • new_orders:未配送の新規注文です。注文を受けるとINSERTされ、商品を配送するとDELETEされます。

  • new_orders表:未配送的新增订单。新增订单的insert及配送订单的delete操作

5種類のトランザクションは以下のようになっています。測定においてはこれら5種類のトランザクションをおよそ10:10:1:1:1でミックスします。

以下是具体的5类事务。测量中这5类事务的比例为10:10:1:1:1

  • new order:注文です。主に注文データのINSERTを行います。

  • 订单,主要是往订单表里insert

  • payment:支払いです。主に貸借のUPDATEと履歴データのINSERTを行います。

  • 支付,主要是贷借的update和对支付记录表进行的insert操作

  • order status:注文状況の確認です。注文データのSELECTを行います。

  • 订单状态,订单的状态确认。主要对订单表进行查询。

  • delivery:配送です。新規注文のDELETEと注文データのフラグ更新を行います。

  • 配送,新增订单的删除及订单表的flag更新。

  • stock level:在庫確認です。在庫データのSELECTを行います。

  • 库存确认。库存数据的查询

     

     

    扛不住了.... 明天继续

     

TPC-Cの実装はあまり公開されているものがなく、私の知る限りDBT-2とtpcc-mysqlしかないようです。またこれらはいずれもTPC-Cの仕様をかいつまんで実装したものとなっており、全ての仕様を満たしてはいません。そのため測定結果はTPC-Cの公式スコアとは言えませんので、ご注意ください。

TPC-Cの概要が分かったところで、早速tpcc-mysqlのセットアップをしていきましょう。tpcc-mysqlMySQLのコンサル会社であるPercona Inc.によって開発されたもので、launchpadでソースが公開されています。launchpadからのソース取得にはBazaarを使います。CentOS 5.2においてBazaarすら入っていない状態からは、以下のようにしてインストールします。