Performance Benchmarks for Bloombase Spitfire StoreSafe Encryption Security Server for Microsoft Windows

907 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
907
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Performance Benchmarks for Bloombase Spitfire StoreSafe Encryption Security Server for Microsoft Windows

  1. 1. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P1 © 2010 Bloombase Technologies Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows A performance testing report on Microsoft Windows file-systems and Oracle TPC-C 2010/1/2 Executive Summary Bloombase Spitfire StoreSafe Storage Security Server protects privacy of sensitive enterprise data by transparent encryption and decryption. This paper summarizes performance tests of Bloombase Spitfire StoreSafe Storage Security Server for Microsoft Windows on file-systems and relational database management systems.
  2. 2. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P2 © 2010 Bloombase Technologies Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, people and events depicted herein are fictitious and no association with any real company, organization, product, person or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Bloombase Technologies. Bloombase Technologies may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Bloombase Technologies, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property. This document is the property of Bloombase Technologies. No exploitation or transfer of any information contained herein is permitted in the absence of an agreement with Bloombase Technologies, and neither the document nor any such information may be released without the written consent of Bloombase Technologies. © 2010 Bloombase Technologies Bloombase, Spitfire, StoreSafe and Keyparc are either registered trademarks or trademarks of Bloombase Technologies in the United States, People’s Republic of China, Hong Kong Special Administrative Region and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners. Document No.: BLBS_10Q1_TN_BloombaseSpitfireStoreSafeMicrosoftWindowsBenchmarks_USLET_EN_P1_R1
  3. 3. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P3 © 2010 Bloombase Technologies Table of Contents Table of Contents 3 Introduction 6 Purpose and Scope 7 Assumptions 8 Infrastructure 9 Server ...................................................................................................... 9 Storage .................................................................................................... 9 File Systems ............................................................................................ 9 Application Software ............................................................................ 10 Data At-Rest Protection Software ........................................................ 10 Benchmarking Software ....................................................................... 10 Setup Without Encryption..................................................................... 10 Setup With Encryption .......................................................................... 10 File System Setup ................................................................................. 11 File System Tests .................................................................................... 11 Database Tests ....................................................................................... 11 Database Setup ..................................................................................... 11 Bloombase Spitfire StoreSafe Setup .................................................... 12 Bloombase Spitfire KeyCastle Setup .................................................... 13
  4. 4. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P4 © 2010 Bloombase Technologies File System Benchmarks 14 Configurations .......................................................................................14 Benchmark Tests ................................................................................... 14 2GB on FAT32 ......................................................................................... 14 6GB on FAT32 ......................................................................................... 15 2GB on NTFS ........................................................................................... 16 6GB on NTFS ........................................................................................... 17 Conclusion ............................................................................................. 18 TPC-C Benchmarks 19 Configurations .......................................................................................19 Benchmark Tests ................................................................................... 21 Default TPC-C Profile .............................................................................. 23 Query Intensive Profile .......................................................................... 24 Update Intensive Profile......................................................................... 25 Conclusion ............................................................................................. 26 Database Batch Process Benchmarks 27 Configurations .......................................................................................27 Benchmark Tests ................................................................................... 27 Find Orders By Amount and Customer Balance and Discount Query ..... 27 Find Orders By Amount Query ................................................................ 28 Find Customers By Name Query ............................................................. 29 Find Items Under Stock Query ............................................................... 29 Update Order Line By Amount Query ..................................................... 30 Conclusion ............................................................................................. 31 Conclusion 32 Acknowledgement 33 Disclaimer 34 Technical Reference 35 Appendix A – File System Benchmark Scripts 36 2GB on FAT32 Test Script ..................................................................... 36 2GB on NTFS Test Script ....................................................................... 37 6GB on FAT32 Test Script ..................................................................... 37 6GB on NTFS Test Script ....................................................................... 38 Appendix B - TPC-C Database Creation Scripts 39 User Creation Script .............................................................................. 39 Table Creation Script ............................................................................ 39 Index Creation Script ............................................................................ 40 TPC-C Queries .......................................................................................42 New Order Stored Procedure Script ....................................................... 42 Order Status Stored Procedure Script .................................................... 45 Payment Stored Procedure Script .......................................................... 46 Stock Level Stored Procedure Script ...................................................... 48
  5. 5. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P5 © 2010 Bloombase Technologies Delivery Stored Procedure Script ........................................................... 49 Appendix C - Batch Process SQL Scripts 51 Find Orders By Amount And Customer Balance and Discount Query .. 51 Find Orders By Amount Query .............................................................. 52 Find Customer By Name Query............................................................. 52 Find Items Under Stock Query ............................................................. 52 Update Order Line By Amount Query ................................................... 53
  6. 6. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P6 © 2010 Bloombase Technologies Introduction Digital assets including financial reports, legal documents, private human resources information, confidential contracts and sensitive user data are invaluable properties of a corporation. A business cannot risk losing these information, both confidentiality and non-repudiation. Nevertheless, the Internet has becoming more pervasive, security attacks have grown. News and reports have revealed millions of dollars of loss in various enterprises and organizations due to security breaches. Data protection at the persistence layer used to be an uncommon subject in information technology industry. Persistence data, in the old days, are assumed safely kept and stored in highly secure data centers with effective physical access control and close surveillance. However, trends in the industry in backup, archive and high availability with an aim to safeguard data from the worst attack and be responsive to rescues, keeping the enterprise core system running non-stop, have opened up chances confidential data get disclosed and tampered by unauthorized parties. Numerous security compliance and standards including Sarbanes Oxley, Gramm-Leach-Bliley Act and Personal Data Privacy Ordinance have raised enterprises’ awareness of securing their core business and customer data. However, persistence data protection is technically a difficult subject. One has to prepare for additional system complexity, loss of performance, at the same time, maintaining the same level of stability and scalability, and most important of all, be highly secure, hacker-proof rather than exposing more security loopholes. Core business data of an enterprise constitutes a major segment of assets that a corporation possesses. Customer data, marketing strategies, intellectual properties in form of source codes and business logic, sales history and prediction figures, and other decision support numerical analysis as result of data- mining may often bury forward looking intelligence that in some sense have very high future value when put into good use. This technical note discusses application of NIST FIPS 140-2 validated Bloombase Spitfire StoreSafe Storage Security Server to protect files on Microsoft Windows and Oracle data files. An industry standard file-system load generation tool called ‘dd’ was used to apply load onto Windows file-systems. Oracle database throughput and latency were tested and measured by another relational database management system (RDBMS) benchmarking tool called ‘Hammerora’ which generates real-life database access patterns and simulates multi-user concurrent use commonly seen in large enterprises and corporations. The tests were executed on both plain and ciphered data. Latencies and throughputs were measured, compared and analysed. Despite benefit of Bloombase Spitfire StoreSafe Storage Encryptor being transparent in deployment and operation, readers will see as well the benefit of high performance encryption at wirespeed that enables negligible impact to secured data system upon introduction of data cryptography.
  7. 7. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P7 © 2010 Bloombase Technologies Purpose and Scope Persistence data encryption at file level provides the best entry point for achieving information security privacy regulatory compliance requirements in view of both manageability and security. Securing Oracle data files is not an easy task as data files are dynamic, they keep updated at all times which means static way of data encryption offered by encryption utilities are not going to fit the bill. Sensitive data committed to Oracle data files will also be written to database redo logs, archive logs and flash recovery logs. Thus, to secure the system as a whole, all data files, redo, archive and flash recovery logs have to be encrypted as well. Bloombase Spitfire StoreSafe storage security server validated at NIST FIPS 140-2 provides a single solution to various information security problems that place huge threats to sensitive data stored in file-systems and relational databases especially Oracle in which transparent encryption is not in place. This document describes application of Bloombase Spitfire StoreSafe storage security server on Windows file-systems applicable to Oracle to secure sensitive information at-rest transparently without tedious second development efforts and numerous deployment risks, enabling customers to protect their private business information and immediately, thus achieving various information security regulatory compliances and standards.
  8. 8. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P8 © 2010 Bloombase Technologies Assumptions This document describes performance benchmark testing of Bloombase Spitfire StoreSafe Storage Security Server 3.0 on Oracle 8i database server, FAT32 and NTFS file-systems on Microsoft Windows Server 2000 operating system. We assume readers have basic knowledge of file operations, structured query language (SQL), Oracle and encryption to be able to comprehend the technical parts of the literature.
  9. 9. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P9 © 2010 Bloombase Technologies Infrastructure Server Server IBM x-Series server Processors 1 x Intel Pentium 4 3.00 GHz Memory 2 GB Operating System Microsoft Windows 2000 Advanced Server SP4 Storage Storage Type Internal Serial ATA Size 80 GB Manufacturer Hitachi File Systems
  10. 10. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P10 © 2010 Bloombase Technologies File Systems FAT32 and NTFS Application Software Oracle Oracle Databaser Server 8i (8.1.7) Data At-Rest Protection Software Bloombase Spitfire StoreSafe Bloombase Spitfire StoreSafe Storage Security Server 3.0 for Microsoft Windows Bloombase Spitfire KeyCastle Bloombase Spitfire KeyCastle Key Management Server 2.0 Benchmarking Software File System dd for Windows1 Oracle Hammerora for Windows2 Setup Without Encryption The following figure shows the benchmarking setup without Bloombase Spitfire StoreSafe encryption Clear text Setup With Encryption The benchmark testing with Bloombase Spitfire StoreSafe encryption environment is setup as in below figure
  11. 11. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P11 © 2010 Bloombase Technologies Bloombase Spitfire KeyCastle Key Management Server Bloombase Spitfire StoreSafe Security Server X&*^2 3#$(+ Oracle 8i on Ethernet Network Windows Server 2000 with Storage Network Internal storage File System Setup The disk-partition-under-test is assigned drive letter E: with capacity 18 GB in size. File System Tests For file system benchmark tests, the partition-under-test is formatted by both FAT32 and NTFS file systems. Database Tests For Oracle benchmark tests, the partition-under-test is formatted by NTFS file system. Database Setup Oracle 8i for Windows version 8.1.7 is installed at non system drive D: at location D:oracle Oracle database namely orabm is create with data file location at
  12. 12. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P12 © 2010 Bloombase Technologies E:oracleoradataorabm with 3 redo logs at 10 MB in size and archive log turned on. Redo logs are configured to store at location E:oracleoradataorabm whereas archive logs at E:oracleoradataorabmarchive Bloombase Spitfire StoreSafe Setup Bloombase Spitfire StoreSafe security server for Microsoft Windows version 3.0 and Spitfire StoreSafe web-based management console are installed at application server at location C:spitfire A Bloombase Spitfire StoreSafe virtual storage namely protected is created at physical location E: secured by AES 256-bit encryption cipher using Spitfire KeyCastle managed encryption key namely key When Bloombase Spitfire StoreSafe is in operation, all files written under E: get encrypted by Spitfire StoreSafe automatically before the ciphertext contents are physically written to the disk. When files under Spitfire StoreSafe secured drive are accessed and read, the ciphertext contents are automatically un-encrypted before the on-the-fly un-encrypted virtual plain contents are returned to the trusted applications. When Bloombase Spitfire StoreSafe is put to ‘down’ status, files written and read under E:
  13. 13. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P13 © 2010 Bloombase Technologies get written and read with no alteration which means plain contents written to physical disks will reside on physical disk media. Bloombase Spitfire KeyCastle Setup Bloombase Spitfire KeyCastle Key Management Server 2.0 is installed on a standalone appliance with dual Intel Quad-Core Xeon 5400 series processors with 4GB main memory and quad GbE network modules. Encryption key namely key is generated at Bloombase Spitfire KeyCastle Key Management Server by RSA algorithm at 2048-bit in length.
  14. 14. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P14 © 2010 Bloombase Technologies File System Benchmarks Configurations Chrysocome dd version 0.5 zip archive dd-0.5.zip is downloaded and uncompressed into Microsoft Windows 2000 Advanced Server Windows default directory at C:WINNT Two ISO disc image files of random contents are generated and stored at D:fs6G.iso and D:fs2G.iso for Chrysocome dd’s generation of file read/write operations to Bloombase Spitfire StoreSafe encrypted virtual storage sub-directory E:fs and compare with those without encryption. Benchmark Tests 2GB on FAT32 Drive under test E: is formatted by
  15. 15. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P15 © 2010 Bloombase Technologies FAT32 file-system and directory E:fs is created. With Bloombase Spitfire StoreSafe at ‘off’ status, the 2GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write in plain. The image file is then copied from drive- under-test back to D: where start and end times are recorded simulating file read in plain. With Bloombase Spitfire StoreSafe at ‘on’ status, the 2GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write with on-the-fly encryption. The image file is then copied from drive-under-test back to D: where start and end times are recorded simulating file read with on-the-fly un-encryption. The test is automated by test script0 and is run for 5 times with average taken. Latency changes are calculated and summarized in below table Plain With Encryption Latency Change (%) Read (sec) 158.75 199.25 +19.21% Write (sec) 201.25 219.25 +8.9% Test results are visualized in chart below. 6GB on FAT32 Drive under test E: is formatted by FAT32 file-system and directory E:fs is created. With Bloombase Spitfire StoreSafe at ‘off’ status, the 6GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write in plain. The image file is then copied from drive- under-test back to D: where start and end times are recorded simulating file read in plain.
  16. 16. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P16 © 2010 Bloombase Technologies With Bloombase Spitfire StoreSafe at ‘on’ status, the 6GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write with on-the-fly encryption. The image file is then copied from drive-under-test back to D: where start and end times are recorded simulating file read with on-the-fly un-encryption. The test is automated by test script0 and is run for 5 times with average taken. Latency changes are calculated and summarized in below table Plain With Encryption Latency Change (%) Read (sec) 435.25 508 +16.71% Write (sec) 446.5 473 +5.9% Test results are visualized in chart below. 2GB on NTFS Drive under test E: is formatted by NTFS file-system and directory E:fs is created. With Bloombase Spitfire StoreSafe at ‘off’ status, the 2GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write in plain. The image file is then copied from drive- under-test back to D: where start and end times are recorded simulating file read in plain. With Bloombase Spitfire StoreSafe at ‘on’ status, the 2GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write with on-the-fly encryption. The image file is then copied from drive-under-test back to D: where start and end times are recorded simulating file read with on-the-fly un-encryption. The test is automated by test script0 and is run for 5 times with average taken. Latency changes are calculated and summarized in below table Plain With Encryption Latency Change (%) Read (sec) 179.2 203.8 +13.72%
  17. 17. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P17 © 2010 Bloombase Technologies Write (sec) 195.4 209.1 +7.0% Test results are visualized in chart below. 6GB on NTFS Drive under test E: is formatted by NTFS file-system and directory E:fs is created. With Bloombase Spitfire StoreSafe at ‘off’ status, the 6GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write in plain. The image file is then copied from drive- under-test back to D: where start and end times are recorded simulating file read in plain. With Bloombase Spitfire StoreSafe at ‘on’ status, the 6GB image file at D: is copied to drive-under-test where start and end times are recorded simulating file write with on-the-fly encryption. The image file is then copied from drive-under-test back to D: where start and end times are recorded simulating file read with on-the-fly un-encryption. The test is automated by test script0 and is run for 5 times with average taken. Latency changes are calculated and summarized in below table Plain With Encryption Latency Change (%) Read (sec) 676.4 765.2 +13.13% Write (sec) 711.4 752.4 +5.78% Test results are visualized in chart below.
  18. 18. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P18 © 2010 Bloombase Technologies Conclusion Bloombase Spitfire StoreSafe Storage Encryption Server has little penalty on file read and write processes ranging from 5% to 19% increase in latency. Ciphered file writes (encryption) have degradation from 5% to 7% whereas ciphered file reads (un-encryption) from 13% to 19%. It is clear that Bloombase Spitfire StoreSafe encryption has relatively larger penalties on file reads than writes. Comparing file sizes, Bloombase Spitfire StoreSafe encryption has relatively larger penalties on small files than large ones.
  19. 19. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P19 © 2010 Bloombase Technologies TPC-C Benchmarks Configurations Transaction Processing Performance Council (TPC) defines transaction processing and database benchmarks and delivers trusted results to the industry. Their tests serve as golden standards for simulating loads for real-life database systems. TPC-C benchmark is a popular yardstick for comparing OLTP performance on various hardware and software configurations. TPC-C is based on an enterprise resource and planning (ERP) system that is commonly seen in real-world enterprises. The test simulates a multi-user client-base who interacts with the sample database for numerous random real-life tasks including • Customer inquiry • Item inquiry • District inquiry • Warehouse inquiry • Order processing • Payment processing • Delivery processing • Stock level inquiry • Order status inquiry • etc
  20. 20. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P20 © 2010 Bloombase Technologies Oracle database system is used in this TPC-C benchmark test. Oracle 8i for Windows version 8.1.7 is installed at non system drive D: at location D:oracle Oracle database namely orabm is create with data file location at E:oracleoradataorabm with 3 redo logs at 10 MB in size and archive log turned on. Redo logs are configured to store at location E:oracleoradataorabm whereas archive logs at E:oracleoradataorabmarchive The sample database structure0 is designed to be very scalable such that TPC-C testers can tailor the volume of data to simulate actual amount of real-life data of their own system. Number of database records follows a typical rule as summarized in below table Districts per Warehouse 10 Customers per District 3,000 Orders per District 3,000 Maximum Items per Order 100,000 Our sample database is initialized with 20 warehouses which results in number of initial records as summarized in below table Warehouses 20 Districts 200 Customers 600,000 Orders 600,000 Order Line Items 6,127,176 Item 100,000 Stock 2,000,000 Indexes0 are built to speed up queries and to simulate real-life databases.
  21. 21. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P21 © 2010 Bloombase Technologies The ensemble data file after initialization is 3.07 GB in size. To ensure fair play on plain database and ciphered database, the database is first initialized in plain with Bloombase Spitfire StoreSafe in ‘off’ status. After TPC-C database is fully initialized, Oracle instance is shutdown and the whole database repository at E:oracleoradataorabm is archived. Benchmark tests on ciphered database were executed with Bloombase Spitfire StoreSafe in ‘on’ status with database archive restored at virtual plain location at E:oracleoradataorabm Before Oracle instance is launched on Bloombase Spitfire StoreSafe virtual storage E: Benchmark Tests TPC-C testing loads are applied by Hammerora with embedded industry leading Apache JMeter performance testing tool.
  22. 22. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P22 © 2010 Bloombase Technologies The tool is installed on a standalone machine with dual Intel Quad-Core Xeon 5400 series processors with 4GB main memory and quad GbE network module. The stress client is purposely sized to apply good enough loads to the TPC-C sample database so as to push the database system to the limits obtaining the maximum throughput of the data system in question. Apache JMeter is built in with a highly configurable multi-threaded load application module and a feature rich graphical interface for reporting load test results.
  23. 23. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P23 © 2010 Bloombase Technologies Default TPC-C Profile Default TPC-C profile specifies a multi-user environment firing random OLTP tasks to the database in test with a typical mix of database queries and updates. In this case, number of virtual users are set to 200 Every virtual user submit 1000 random OLTP requests to the ERP database with random sleep times shorter than 10 ms in between every subsequent requests. The mix of database queries and updates are summarized in below table Virtual Users 200 Loop Count 1000 Sleep Milliseconds 10 New Order Update Ratio 20 Payment Update Ratio 10 Delivery Update Ratio 10 Stock Level Query Ratio 50
  24. 24. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P24 © 2010 Bloombase Technologies Order Status Query Ratio 30 The throughput figures in transaction per minute (tpm) are summarized in below table. Plain With Encryption Throughput Change (%) Throughput (tpm) 7763.95 7626.54 -1.77% The system throughputs are visualized in below chart. Query Intensive Profile The query intensive profile is designed to have relatively larger proportion of random client requests on read-only queries than writable database updates. In this case, number of virtual users are set to 200 Every virtual user submit 1000 random OLTP requests to the ERP database with random sleep times shorter than 10 ms in between every subsequent requests. The mix of database queries and updates are summarized in below table Virtual Users 200 Loop Count 1000 Sleep Milliseconds 10 New Order Update Ratio 1 Payment Update Ratio 1 Delivery Update Ratio 1 Stock Level Query Ratio 50 Order Status Query Ratio 30 The throughput figures in transaction per minute (tpm) are summarized in below table.
  25. 25. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P25 © 2010 Bloombase Technologies Plain With Encryption Throughput Change (%) Throughput (tpm) 21556.11 21268.12 -1.34% The system throughputs are visualized in below chart. Update Intensive Profile The update intensive profile is designed to have relatively larger proportion of random client requests on writeable database updates than read-only queries. In this case, number of virtual users are set to 200 Every virtual user submit 1000 random OLTP requests to the ERP database with random sleep times shorter than 10 ms in between every subsequent requests. The mix of database queries and updates are summarized in below table Virtual Users 200 Loop Count 1000 Sleep Milliseconds 10 New Order Update Ratio 20 Payment Update Ratio 10 Delivery Update Ratio 10 Stock Level Query Ratio 1 Order Status Query Ratio 1 The throughput figures in transaction per minute (tpm) are summarized in below table. Plain With Encryption Throughput Change (%)
  26. 26. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P26 © 2010 Bloombase Technologies Throughput (tpm) 5543.46 5480.41 -0.78% The system throughputs are visualized in below chart. Conclusion Bloombase Spitfire StoreSafe storage level encryption has negligible penalty on TPC-C throughputs ranging from 0.7% to 1.7% drop. Comparing query intensive and update intensive tasks, Bloombase Spitfire StoreSafe storage encryption server has relatively less throughput degradation on update intensive (encryption) than queries (un-encryption).
  27. 27. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P27 © 2010 Bloombase Technologies Database Batch Process Benchmarks Configurations TPC-C benchmark tests essentially measure the overall capability a data system can process concurrent heterogeneous requests at a time. System throughput is primarily a server-side measurement which only makes sense to system administrators and application developers. On the other hand, system users are mostly concerned at the response of the system. When it comes to database encryption, users are sure to be let down if encryption puts a huge penalty to latency of a query or a database record update. This section of paper describes a series of tests based on the same TPC-C database but with long running batch processing SQL’s. The queries were executed on both plain and encrypted version of the same TPC-C warehouse database and their process times, latencies, were measured and compared. Benchmark Tests Find Orders By Amount and Customer Balance and Discount Query This test is based on the SQL below select * from ORDERS, ORDER_LINE, ITEM, CUSTOMER where ORDER_LINE.OL_W_ID = ORDERS.O_W_ID and ORDER_LINE.OL_O_ID = ORDERS.O_ID and ORDER_LINE.OL_D_ID = ORDERS.O_D_ID and ORDER_LINE.OL_I_ID = ITEM.I_ID and ORDERS.O_W_ID = CUSTOMER.C_W_ID and ORDERS.O_D_ID = CUSTOMER.C_D_ID and ORDERS.O_C_ID = CUSTOMER.C_ID and ORDER_LINE.OL_AMOUNT > 28 and ORDER_LINE.OL_AMOUNT < 39
  28. 28. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P28 © 2010 Bloombase Technologies and CUSTOMER.C_BALANCE > 0 and CUSTOMER.C_DISCOUNT > 0.1 and CUSTOMER.C_DISCOUNT < 0.2 order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc This query attempts to find the orders with order line amounts within 28 and 39, customers with balance and discount within 10% and 20%. The query result is sorted by customer last names and first names. Statistics show the query makes use of indexed columns to optimize search and sorting without table scans. The following table summarizes averages of 5 query latencies. Plain With Encryption Latency Change (%) Query (sec) 22.44 22.89 +2.02% The query processing times are visualized in below chart. Find Orders By Amount Query This test is based on the SQL below select * from ORDERS, ORDER_LINE, ITEM, CUSTOMER where ORDER_LINE.OL_W_ID = ORDERS.O_W_ID and ORDER_LINE.OL_O_ID = ORDERS.O_ID and ORDER_LINE.OL_D_ID = ORDERS.O_D_ID and ORDER_LINE.OL_I_ID = ITEM.I_ID and ORDERS.O_W_ID = CUSTOMER.C_W_ID and ORDERS.O_D_ID = CUSTOMER.C_D_ID and ORDERS.O_C_ID = CUSTOMER.C_ID and ORDER_LINE.OL_AMOUNT > 28 and ORDER_LINE.OL_AMOUNT < 39 order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc This query attempts to find the orders with order line amounts within 28 and 39. The query result is sorted by customer last names and first names. Statistics show the query makes use of indexed columns to optimize search and sorting without table scans. The following table summarizes averages of 5 query latencies. Plain With Encryption Latency Change (%)
  29. 29. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P29 © 2010 Bloombase Technologies Query (sec) 37.46 39.57 +5.65% The query processing times are visualized in below chart. Find Customers By Name Query This test is based on the SQL below select * from CUSTOMER where CUSTOMER.C_LAST like 'E%' and CUSTOMER.C_FIRST like 'E%' order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc This query attempts to find customers with both last and first names with ‘E’ as prefix. The query result is sorted by customer last names and first names. Statistics show the query makes use of indexed columns to optimize search and sorting without table scans. The following table summarizes averages of 5 query latencies. Plain With Encryption Latency Change (%) Query (sec) 7.46 8.12 +6.13% The query processing times are visualized in below chart. Find Items Under Stock Query This test is based on the SQL below
  30. 30. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P30 © 2010 Bloombase Technologies select * from STOCK, ITEM, WAREHOUSE where STOCK.S_I_ID = ITEM.I_ID and STOCK.S_W_ID = WAREHOUSE.W_ID and S_QUANTITY < 10 order by WAREHOUSE.W_NAME asc This query attempts to find stocks and items with quantity below 10. The query result is sorted by warehouse names. Statistics show the query makes use of indexed columns to optimize search and sorting without table scans. The following table summarizes averages of 5 query latencies. Plain With Encryption Latency Change (%) Query (sec) 3.15 3.29 +4.19% The query processing times are visualized in below chart. Update Order Line By Amount Query This test is based on the SQL below update ORDER_LINE set OL_DIST_INFO = OL_DIST_INFO where OL_AMOUNT > 18 and OL_AMOUNT < 19 This query attempts to find the order lines with amounts within 18 and 19 and update the district information of the line item by its original contents. Statistics show the query makes use of indexed columns to optimize search and sorting without table scans. The following table summarizes averages of 5 query latencies. Plain With Encryption Latency Change (%) Query (sec) 13.34 14.18 +6.31% The query processing times are visualized in below chart.
  31. 31. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P31 © 2010 Bloombase Technologies Conclusion Bloombase Spitfire StoreSafe has little penalties on long running batch processing SQL’s ranging from 2% to 6%. Comparing read intensive and update intensive queries, Bloombase Spitfire StoreSafe has relative less degradation on latencies for read only queries (un- encryption).
  32. 32. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P32 © 2010 Bloombase Technologies Conclusion Bloombase Spitfire StoreSafe Storage Security Server protects privacy of sensitive enterprise data by transparent encryption and decryption. This paper summarizes quick reference of file and database access latencies and throughputs as a result of introduction of Bloombase Spitfire StoreSafe encryption to the data storage sub-system. Bloombase Spitfire StoreSafe Security Server brings in approximately 5% latency penalty on file writes (encryption) and 15% on file reads (un-encryption) for file systems secured by its real-time transparent encryption, though not negligible, are only barely noticeable for large files. For instance, a system without encryption takes originally 12 minutes to backup a 6 GB archive file. With Bloombase encryption in place, additional 40 seconds are required to complete the process which can easily be absorbed by existing backup time-window and should place no major concern to most applications. Most enterprise scale data systems with sensitive and confidential information are managed by relational database systems as a de-facto standard. Bloombase Spitfire StoreSafe is highly optimized for database protection reporting negligible drop on TPC-C throughputs at around 1% whereas SQL’s executed on Bloombase encrypted databases take an average of 4% longer on latencies. Unlike file access where Bloombase Spitfire StoreSafe is optimized on file writes (encryption), database read-only queries (un-encryption) on Bloombase Spitfire StoreSafe encrypted database files have much less degradation than database updates. Typical OLTP systems generally have relatively much larger proportion of database inquiries than updates which would bring down the latency penalty to less than 3%. Adding processing and caching on the application servers, web servers and the network times, overall latencies likely further minimize to below 1% which is un-noticeable by application users. The end result is a privacy compliant data system yet still fulfils existing service level agreements (SLA). NIST FIPS 140-2 validated Bloombase Spitfire StoreSafe Security Server demonstrates uncompromised data at-rest security and trouble-free fast deployment on-the-fly transparent encryption for file systems and database systems with least impact in both throughput and latency perspectives. For further information about this paper and the solution, please contact us at sales@bloombase.com or visit our website at http://www.bloombase.com.
  33. 33. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P33 © 2010 Bloombase Technologies Acknowledgement We would like to thank the following individuals for their contribution in terms of technical support and facilities management to the completion of the testing process: Sashikala Rajalingam, IBM Innovation Center Catharine GH Tan, IBM Innovation Center
  34. 34. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P34 © 2010 Bloombase Technologies Disclaimer The tests described in this paper were conducted in the Bloombase InteropLab. Bloombase has not tested this configuration with all the combinations of hardware and software options available. There may be significant differences in your configuration that will change the procedures necessary to accomplish the objectives outlined in this paper. If you find that any of these procedures do not work in your environment, please contact us immediately.
  35. 35. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P35 © 2010 Bloombase Technologies Technical Reference 1. dd for Microsoft Windows, http://www.chrysocome.net/dd 2. Hammerora for Windows, http://hammerora.sourceforge.net/ 3. TPC, http://www.tpc.org 4. TPC-C, http://www.tpc.org/tpcc/
  36. 36. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P36 © 2010 Bloombase Technologies Appendix A – File System Benchmark Scripts 2GB on FAT32 Test Script @echo off format E: /FS:FAT32 /q /v: md E:fs set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=D:2G.iso of=E:fs2G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo write time used(s): %timeused% chkdsk E: /f set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=E:fs2G.iso of=D:2G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec%
  37. 37. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P37 © 2010 Bloombase Technologies echo %time% set /A timeused=%endtime%-%starttime% echo read time used(s): %timeused% 2GB on NTFS Test Script @echo off format E: /FS:NTFS /q /v: md E:fs set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=D:2G.iso of=E:fs2G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo write time used(s): %timeused% chkdsk E: /f set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=E:fs2G.iso of=D:2G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo read time used(s): %timeused% 6GB on FAT32 Test Script @echo off format E: /FS:FAT32 /q /v: md E:fs set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=D:6G.iso of=E:fs6G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo write time used(s): %timeused% chkdsk E: /f set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1%
  38. 38. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P38 © 2010 Bloombase Technologies set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=E:fs6G.iso of=D:6G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo read time used(s): %timeused% 6GB on NTFS Test Script @echo off format E: /FS:NTFS /q /v: md E:fs set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=D:6G.iso of=E:fs6G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo write time used(s): %timeused% chkdsk E: /f set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A starttime=%hour%*3600+%min%*60+%sec% echo %time% dd if=E:fs6G.iso of=D:6G.iso set /A hour=%time:~0,1%*10+%time:~1,1% set /A min=%time:~3,1%*10+%time:~4,1% set /A sec=%time:~6,1%*10+%time:~7,1% set /A endtime=%hour%*3600+%min%*60+%sec% echo %time% set /A timeused=%endtime%-%starttime% echo read time used(s): %timeused%
  39. 39. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P39 © 2010 Bloombase Technologies Appendix B - TPC-C Database Creation Scripts User Creation Script create user orabm identified by orabm temporary tablespace temp; grant connect,resource to orabm; alter user orabm default tablespace tools; alter user orabm quota unlimited on tools; revoke unlimited tablespace from orabm; exit Table Creation Script grant connect, resource to orabm; grant connect, resource to sys; CREATE TABLE ORABM.CUSTOMER (C_ID NUMBER(5, 0), C_D_ID NUMBER(2, 0), C_W_ID NUMBER(4, 0), C_FIRST VARCHAR2(16), C_MIDDLE CHAR(2), C_LAST VARCHAR2(16), C_STREET_1 VARCHAR2(20), C_STREET_2 VARCHAR2(20), C_CITY VARCHAR2(20), C_STATE CHAR(2), C_ZIP CHAR(9), C_PHONE CHAR(16), C_SINCE DATE, C_CREDIT CHAR(2), C_CREDIT_LIM NUMBER(12, 2), C_DISCOUNT NUMBER(4, 4), C_BALANCE NUMBER(12, 2), C_YTD_PAYMENT NUMBER(12, 2), C_PAYMENT_CNT NUMBER(8, 0), C_DELIVERY_CNT NUMBER(8, 0), C_DATA VARCHAR2(500)) PCTFREE 10;
  40. 40. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P40 © 2010 Bloombase Technologies CREATE TABLE ORABM.DISTRICT (D_ID NUMBER(2, 0), D_W_ID NUMBER(4, 0), D_YTD NUMBER(12, 2), D_TAX NUMBER(4, 4), D_NEXT_O_ID NUMBER, D_NAME VARCHAR2(10), D_STREET_1 VARCHAR2(20), D_STREET_2 VARCHAR2(20), D_CITY VARCHAR2(20), D_STATE CHAR(2), D_ZIP CHAR(9)) PCTFREE 10; CREATE TABLE ORABM.HISTORY (H_C_ID NUMBER, H_C_D_ID NUMBER, H_C_W_ID NUMBER, H_D_ID NUMBER, H_W_ID NUMBER, H_DATE DATE, H_AMOUNT NUMBER(6, 2), H_DATA VARCHAR2(24)) PCTFREE 10; CREATE TABLE ORABM.ITEM (I_ID NUMBER(6, 0), I_IM_ID NUMBER, I_NAME VARCHAR2(24), I_PRICE NUMBER(5, 2), I_DATA VARCHAR2(50)) PCTFREE 10; CREATE TABLE ORABM.NEW_ORDER (NO_O_ID NUMBER, NO_D_ID NUMBER, NO_W_ID NUMBER) PCTFREE 10; CREATE TABLE ORABM.ORDERS (O_ID NUMBER, O_D_ID NUMBER, O_W_ID NUMBER, O_C_ID NUMBER, O_ENTRY_D DATE, O_CARRIER_ID NUMBER, O_OL_CNT NUMBER, O_ALL_LOCAL NUMBER) PCTFREE 10; CREATE TABLE ORABM.ORDER_LINE (OL_O_ID NUMBER, OL_D_ID NUMBER, OL_W_ID NUMBER, OL_NUMBER NUMBER, OL_DELIVERY_D DATE, OL_I_ID NUMBER, OL_SUPPLY_W_ID NUMBER, OL_QUANTITY NUMBER, OL_AMOUNT NUMBER(6, 2), OL_DIST_INFO CHAR(24)) PCTFREE 10; CREATE TABLE ORABM.STOCK (S_I_ID NUMBER(6, 0), S_W_ID NUMBER(4, 0), S_QUANTITY NUMBER(6, 0), S_DIST_01 CHAR(24), S_DIST_02 CHAR(24), S_DIST_03 CHAR(24), S_DIST_04 CHAR(24), S_DIST_05 CHAR(24), S_DIST_06 CHAR(24), S_DIST_07 CHAR(24), S_DIST_08 CHAR(24), S_DIST_09 CHAR(24), S_DIST_10 CHAR(24), S_YTD NUMBER(10, 0), S_ORDER_CNT NUMBER(6, 0), S_REMOTE_CNT NUMBER(6, 0), S_DATA VARCHAR2(50)) PCTFREE 10; CREATE TABLE ORABM.WAREHOUSE (W_ID NUMBER(4, 0), W_YTD NUMBER(12, 2), W_TAX NUMBER(4, 4), W_NAME VARCHAR2(10), W_STREET_1 VARCHAR2(20), W_STREET_2 VARCHAR2(20), W_CITY VARCHAR2(20), W_STATE CHAR(2), W_ZIP CHAR(9)) PCTFREE 10; exit Index Creation Script alter session set sort_area_size=5000000; CREATE UNIQUE INDEX ORABM.CUSTOMER_I1 ON ORABM.CUSTOMER ( C_W_ID, C_D_ID, C_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.CUSTOMER_I2 ON ORABM.CUSTOMER ( C_LAST, C_W_ID, C_D_ID, C_FIRST, C_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.DISTRICT_I1 ON ORABM.DISTRICT ( D_W_ID, D_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.ITEM_I1
  41. 41. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P41 © 2010 Bloombase Technologies ON ORABM.ITEM ( I_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.NEW_ORDER_I1 ON ORABM.NEW_ORDER ( NO_W_ID, NO_D_ID, NO_O_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.ORDERS_I1 ON ORABM.ORDERS ( O_W_ID, O_D_ID, O_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.ORDERS_I2 ON ORABM.ORDERS (O_W_ID, O_D_ID, O_C_ID, O_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.ORDER_LINE_I1 ON ORABM.ORDER_LINE ( OL_W_ID, OL_D_ID, OL_O_ID, OL_NUMBER) PCTFREE 10; CREATE UNIQUE INDEX ORABM.STOCK_I1 ON ORABM.STOCK ( S_I_ID, S_W_ID) PCTFREE 10; CREATE UNIQUE INDEX ORABM.WAREHOUSE_I1 ON ORABM.WAREHOUSE ( W_ID) PCTFREE 10; CREATE INDEX ORABM.CUSTOMER_I3 ON ORABM.CUSTOMER ( C_FIRST ) PCTFREE 10; CREATE INDEX ORABM.CUSTOMER_I4 ON ORABM.CUSTOMER ( C_BALANCE ) PCTFREE 10; CREATE INDEX ORABM.CUSTOMER_I5 ON ORABM.CUSTOMER ( C_DISCOUNT ) PCTFREE 10; CREATE INDEX ORABM.CUSTOMER_I6 ON ORABM.CUSTOMER ( C_CITY ) PCTFREE 10; CREATE INDEX ORABM.CUSTOMER_I7 ON ORABM.CUSTOMER ( C_ID ) PCTFREE 10; CREATE INDEX ORABM.DISTRICT_I2 ON ORABM.DISTRICT ( D_ID ) PCTFREE 10; CREATE INDEX ORABM.DISTRICT_I3 ON ORABM.DISTRICT ( D_CITY ) PCTFREE 10; CREATE INDEX ORABM.ORDERS_I3 ON ORABM.ORDERS ( O_OL_CNT ) PCTFREE 10;
  42. 42. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P42 © 2010 Bloombase Technologies CREATE INDEX ORABM.ORDERS_I4 ON ORABM.ORDERS ( O_C_ID ) PCTFREE 10; CREATE INDEX ORABM.ORDERS_I5 ON ORABM.ORDERS ( O_ID) PCTFREE 10; CREATE INDEX ORABM.ORDER_LINE_I2 ON ORABM.ORDER_LINE ( OL_AMOUNT ) PCTFREE 10; CREATE INDEX ORABM.ORDER_LINE_I3 ON ORABM.ORDER_LINE ( OL_I_ID ) PCTFREE 10; CREATE INDEX ORABM.ORDER_LINE_I4 ON ORABM.ORDER_LINE ( OL_O_ID) PCTFREE 10; CREATE INDEX ORABM.STOCK_I2 ON ORABM.STOCK ( S_QUANTITY ) PCTFREE 10; CREATE INDEX ORABM.WAREHOUSE_I2 ON ORABM.WAREHOUSE ( W_NAME ) PCTFREE 10; TPC-C Queries New Order Stored Procedure Script CREATE OR REPLACE PROCEDURE "ORABM"."NEWORD" ( no_w_id INTEGER, no_max_w_id INTEGER, no_d_id INTEGER, no_c_id INTEGER, no_o_ol_cnt INTEGER, no_c_discount OUT NUMBER, no_c_last OUT VARCHAR2, no_c_credit OUT VARCHAR2, no_d_tax OUT NUMBER, no_w_tax OUT NUMBER, no_d_next_o_id IN OUT INTEGER, timestamp IN DATE ) IS no_ol_supply_w_id INTEGER; no_ol_i_id NUMBER; no_ol_quantity NUMBER; no_o_all_local INTEGER; o_id INTEGER; no_i_name VARCHAR2(24); no_i_price NUMBER(5,2); no_i_data VARCHAR2(50); no_s_quantity NUMBER(6); no_ol_amount NUMBER(6,2); no_s_dist_01 CHAR(24);
  43. 43. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P43 © 2010 Bloombase Technologies no_s_dist_02 CHAR(24); no_s_dist_03 CHAR(24); no_s_dist_04 CHAR(24); no_s_dist_05 CHAR(24); no_s_dist_06 CHAR(24); no_s_dist_07 CHAR(24); no_s_dist_08 CHAR(24); no_s_dist_09 CHAR(24); no_s_dist_10 CHAR(24); no_ol_dist_info CHAR(24); no_s_data VARCHAR2(50); x NUMBER; rbk NUMBER; not_serializable EXCEPTION; PRAGMA EXCEPTION_INIT(not_serializable,-8177); deadlock EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock,-60); snapshot_too_old EXCEPTION; PRAGMA EXCEPTION_INIT(snapshot_too_old,-1555); integrity_viol EXCEPTION; PRAGMA EXCEPTION_INIT(integrity_viol,-1); BEGIN --assignment below added due to error in appendix code no_o_all_local := 0; SELECT c_discount, c_last, c_credit, w_tax INTO no_c_discount, no_c_last, no_c_credit, no_w_tax FROM customer, warehouse WHERE warehouse.w_id = no_w_id AND customer.c_w_id = no_w_id AND customer.c_d_id = no_d_id AND customer.c_id = no_c_id; UPDATE district SET d_next_o_id = d_next_o_id + 1 WHERE d_id = no_d_id AND d_w_id = no_w_id RETURNING d_next_o_id, d_tax INTO no_d_next_o_id, no_d_tax; o_id := no_d_next_o_id; INSERT INTO ORDERS (o_id, o_d_id, o_w_id, o_c_id, o_entry_d, o_ol_cnt, o_all_local) VALUES (o_id, no_d_id, no_w_id, no_c_id, timestamp, no_o_ol_cnt, no_o_all_local); INSERT INTO NEW_ORDER (no_o_id, no_d_id, no_w_id) VALUES (o_id, no_d_id, no_w_id); --#2.4.1.4 rbk := round(DBMS_RANDOM.value(low => 1, high => 100)); --#2.4.1.5 FOR loop_counter IN 1 .. no_o_ol_cnt LOOP IF ((loop_counter = no_o_ol_cnt) AND (rbk = 1)) THEN no_ol_i_id := 100001; ELSE no_ol_i_id := round(DBMS_RANDOM.value(low => 1, high => 100000)); END IF; --#2.4.1.5.2 x := round(DBMS_RANDOM.value(low => 1, high => 100)); IF ( x > 1 ) THEN no_ol_supply_w_id := no_w_id; ELSE no_ol_supply_w_id := no_w_id; --no_all_local is actually used before this point so following not beneficial no_o_all_local := 0; WHILE ((no_ol_supply_w_id = no_w_id) AND (no_max_w_id != 1)) LOOP no_ol_supply_w_id := round(DBMS_RANDOM.value(low => 1, high => no_max_w_id)); END LOOP; END IF; --#2.4.1.5.3 no_ol_quantity := round(DBMS_RANDOM.value(low => 1, high => 10)); SELECT i_price, i_name, i_data INTO no_i_price, no_i_name, no_i_data FROM item WHERE i_id = no_ol_i_id;
  44. 44. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P44 © 2010 Bloombase Technologies SELECT s_quantity, s_data, s_dist_01, s_dist_02, s_dist_03, s_dist_04, s_dist_05, s_dist_06, s_dist_07, s_dist_08, s_dist_09, s_dist_10 INTO no_s_quantity, no_s_data, no_s_dist_01, no_s_dist_02, no_s_dist_03, no_s_dist_04, no_s_dist_05, no_s_dist_06, no_s_dist_07, no_s_dist_08, no_s_dist_09, no_s_dist_10 FROM stock WHERE s_i_id = no_ol_i_id AND s_w_id = no_ol_supply_w_id; IF ( no_s_quantity > no_ol_quantity ) THEN no_s_quantity := ( no_s_quantity - no_ol_quantity ); ELSE no_s_quantity := ( no_s_quantity - no_ol_quantity + 91 ); END IF; UPDATE stock SET s_quantity = no_s_quantity WHERE s_i_id = no_ol_i_id AND s_w_id = no_ol_supply_w_id; no_ol_amount := ( no_ol_quantity * no_i_price * ( 1 + no_w_tax + no_d_tax ) * ( 1 - no_c_discount ) ); IF no_d_id = 1 THEN no_ol_dist_info := no_s_dist_01; ELSIF no_d_id = 2 THEN no_ol_dist_info := no_s_dist_02; ELSIF no_d_id = 3 THEN no_ol_dist_info := no_s_dist_03; ELSIF no_d_id = 4 THEN no_ol_dist_info := no_s_dist_04; ELSIF no_d_id = 5 THEN no_ol_dist_info := no_s_dist_05; ELSIF no_d_id = 6 THEN no_ol_dist_info := no_s_dist_06; ELSIF no_d_id = 7 THEN no_ol_dist_info := no_s_dist_07; ELSIF no_d_id = 8 THEN no_ol_dist_info := no_s_dist_08; ELSIF no_d_id = 9 THEN no_ol_dist_info := no_s_dist_09; ELSIF no_d_id = 10 THEN no_ol_dist_info := no_s_dist_10; END IF; INSERT INTO order_line (ol_o_id, ol_d_id, ol_w_id, ol_number, ol_i_id, ol_supply_w_id, ol_quantity, ol_amount, ol_dist_info) VALUES (o_id, no_d_id, no_w_id, loop_counter, no_ol_i_id, no_ol_supply_w_id, no_ol_quantity, no_ol_amount, no_ol_dist_info); END LOOP; COMMIT;
  45. 45. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P45 © 2010 Bloombase Technologies EXCEPTION WHEN not_serializable OR deadlock OR snapshot_too_old OR integrity_viol THEN ROLLBACK; END; Order Status Stored Procedure Script CREATE OR REPLACE PROCEDURE "ORABM"."OSTAT" ( os_w_id INTEGER, os_d_id INTEGER, os_c_id IN OUT INTEGER, byname INTEGER, os_c_last IN OUT VARCHAR2, os_c_first OUT VARCHAR2, os_c_middle OUT VARCHAR2, os_c_balance OUT NUMBER, os_o_id OUT INTEGER, os_entdate OUT DATE, os_o_carrier_id OUT INTEGER ) IS TYPE numbertable IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; os_ol_i_id numbertable; os_ol_supply_w_id numbertable; os_ol_quantity numbertable; TYPE amounttable IS TABLE OF NUMBER(6,2) INDEX BY BINARY_INTEGER; os_ol_amount amounttable; TYPE datetable IS TABLE OF DATE INDEX BY BINARY_INTEGER; os_ol_delivery_d datetable; namecnt INTEGER; i BINARY_INTEGER; CURSOR c_name IS SELECT c_balance, c_first, c_middle, c_id FROM customer WHERE c_last = os_c_last AND c_d_id = os_d_id AND c_w_id = os_w_id ORDER BY c_first; CURSOR c_line IS SELECT ol_i_id, ol_supply_w_id, ol_quantity, ol_amount, ol_delivery_d FROM order_line WHERE ol_o_id = os_o_id AND ol_d_id = os_d_id AND ol_w_id = os_w_id; os_c_line c_line%ROWTYPE; not_serializable EXCEPTION; PRAGMA EXCEPTION_INIT(not_serializable,-8177); deadlock EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock,-60); snapshot_too_old EXCEPTION; PRAGMA EXCEPTION_INIT(snapshot_too_old,-1555); BEGIN IF ( byname = 1 ) THEN SELECT count(c_id) INTO namecnt FROM customer WHERE c_last = os_c_last AND c_d_id = os_d_id AND c_w_id = os_w_id; IF ( MOD (namecnt, 2) = 1 ) THEN namecnt := (namecnt + 1); END IF; OPEN c_name; FOR loop_counter IN 0 .. (namecnt/2) LOOP
  46. 46. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P46 © 2010 Bloombase Technologies FETCH c_name INTO os_c_balance, os_c_first, os_c_middle, os_c_id; END LOOP; close c_name; ELSE SELECT c_balance, c_first, c_middle, c_last INTO os_c_balance, os_c_first, os_c_middle, os_c_last FROM customer WHERE c_id = os_c_id AND c_d_id = os_d_id AND c_w_id = os_w_id; END IF; -- The following statement in the TPC-C specification appendix is incorrect -- as it does not include the where clause and does not restrict the -- results set giving an ORA-01422. -- The statement has been modified in accordance with the -- descriptive specification as follows: -- The row in the ORDER table with matching O_W_ID (equals C_W_ID), -- O_D_ID (equals C_D_ID), O_C_ID (equals C_ID), and with the largest -- existing O_ID, is selected. This is the most recent order placed by that -- customer. O_ID, O_ENTRY_D, and O_CARRIER_ID are retrieved. SELECT o_id, o_carrier_id, o_entry_d INTO os_o_id, os_o_carrier_id, os_entdate FROM (SELECT o_id, o_carrier_id, o_entry_d FROM orders where o_d_id = os_d_id AND o_w_id = os_w_id and o_c_id=os_c_id ORDER BY o_id DESC) WHERE ROWNUM = 1; i := 0; FOR os_c_line IN c_line LOOP os_ol_i_id(i) := os_c_line.ol_i_id; os_ol_supply_w_id(i) := os_c_line.ol_supply_w_id; os_ol_quantity(i) := os_c_line.ol_quantity; os_ol_amount(i) := os_c_line.ol_amount; os_ol_delivery_d(i) := os_c_line.ol_delivery_d; i := i+1; END LOOP; EXCEPTION WHEN not_serializable OR deadlock OR snapshot_too_old THEN ROLLBACK; END; Payment Stored Procedure Script CREATE OR REPLACE PROCEDURE "ORABM"."PAYMENT" ( p_w_id INTEGER, p_d_id INTEGER, p_c_w_id INTEGER, p_c_d_id INTEGER, p_c_id IN OUT INTEGER, byname INTEGER, p_h_amount NUMBER, p_c_last IN OUT VARCHAR2, p_w_street_1 OUT VARCHAR2, p_w_street_2 OUT VARCHAR2, p_w_city OUT VARCHAR2, p_w_state OUT VARCHAR2, p_w_zip OUT VARCHAR2, p_d_street_1 OUT VARCHAR2, p_d_street_2 OUT VARCHAR2, p_d_city OUT VARCHAR2, p_d_state OUT VARCHAR2, p_d_zip OUT VARCHAR2, p_c_first OUT VARCHAR2, p_c_middle OUT VARCHAR2,
  47. 47. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P47 © 2010 Bloombase Technologies p_c_street_1 OUT VARCHAR2, p_c_street_2 OUT VARCHAR2, p_c_city OUT VARCHAR2, p_c_state OUT VARCHAR2, p_c_zip OUT VARCHAR2, p_c_phone OUT VARCHAR2, p_c_since OUT DATE, p_c_credit IN OUT VARCHAR2, p_c_credit_lim OUT NUMBER, p_c_discount OUT NUMBER, p_c_balance IN OUT NUMBER, p_c_data OUT VARCHAR2, timestamp IN DATE ) IS namecnt INTEGER; p_d_name VARCHAR2(11); p_w_name VARCHAR2(11); p_c_new_data VARCHAR2(500); h_data VARCHAR2(30); CURSOR c_byname IS SELECT c_first, c_middle, c_id, c_street_1, c_street_2, c_city, c_state, c_zip, c_phone, c_credit, c_credit_lim, c_discount, c_balance, c_since FROM customer WHERE c_w_id = p_c_w_id AND c_d_id = p_c_d_id AND c_last = p_c_last ORDER BY c_first; not_serializable EXCEPTION; PRAGMA EXCEPTION_INIT(not_serializable,-8177); deadlock EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock,-60); snapshot_too_old EXCEPTION; PRAGMA EXCEPTION_INIT(snapshot_too_old,-1555); BEGIN UPDATE warehouse SET w_ytd = w_ytd + p_h_amount WHERE w_id = p_w_id; SELECT w_street_1, w_street_2, w_city, w_state, w_zip, w_name INTO p_w_street_1, p_w_street_2, p_w_city, p_w_state, p_w_zip, p_w_name FROM warehouse WHERE w_id = p_w_id; UPDATE district SET d_ytd = d_ytd + p_h_amount WHERE d_w_id = p_w_id AND d_id = p_d_id; SELECT d_street_1, d_street_2, d_city, d_state, d_zip, d_name INTO p_d_street_1, p_d_street_2, p_d_city, p_d_state, p_d_zip, p_d_name FROM district WHERE d_w_id = p_w_id AND d_id = p_d_id; IF ( byname = 1 ) THEN SELECT count(c_id) INTO namecnt FROM customer WHERE c_last = p_c_last AND c_d_id = p_c_d_id AND c_w_id = p_c_w_id; OPEN c_byname; IF ( MOD (namecnt, 2) = 1 ) THEN namecnt := (namecnt + 1); END IF; FOR loop_counter IN 0 .. (namecnt/2) LOOP FETCH c_byname INTO p_c_first, p_c_middle, p_c_id, p_c_street_1, p_c_street_2, p_c_city, p_c_state, p_c_zip, p_c_phone, p_c_credit, p_c_credit_lim, p_c_discount, p_c_balance, p_c_since; END LOOP; CLOSE c_byname; ELSE
  48. 48. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P48 © 2010 Bloombase Technologies SELECT c_first, c_middle, c_last, c_street_1, c_street_2, c_city, c_state, c_zip, c_phone, c_credit, c_credit_lim, c_discount, c_balance, c_since INTO p_c_first, p_c_middle, p_c_last, p_c_street_1, p_c_street_2, p_c_city, p_c_state, p_c_zip, p_c_phone, p_c_credit, p_c_credit_lim, p_c_discount, p_c_balance, p_c_since FROM customer WHERE c_w_id = p_c_w_id AND c_d_id = p_c_d_id AND c_id = p_c_id; END IF; p_c_balance := ( p_c_balance + p_h_amount ); IF p_c_credit = 'BC' THEN SELECT c_data INTO p_c_data FROM customer WHERE c_w_id = p_c_w_id AND c_d_id = p_c_d_id AND c_id = p_c_id; -- The following statement in the TPC-C specification appendix is incorrect -- copied setting of h_data from later on in the procedure to here as well h_data := ( p_w_name || ' ' || p_d_name ); p_c_new_data := (TO_CHAR(p_c_id) || ' ' || TO_CHAR(p_c_d_id) || ' ' || TO_CHAR(p_c_w_id) || ' ' || TO_CHAR(p_d_id) || ' ' || TO_CHAR(p_w_id) || ' ' || TO_CHAR(p_h_amount,'9999.99') || TO_CHAR(timestamp) || h_data); p_c_new_data := substr(CONCAT(p_c_new_data,p_c_data),1,500-(LENGTH(p_c_new_data))); UPDATE customer SET c_balance = p_c_balance, c_data = p_c_new_data WHERE c_w_id = p_c_w_id AND c_d_id = p_c_d_id AND c_id = p_c_id; ELSE UPDATE customer SET c_balance = p_c_balance WHERE c_w_id = p_c_w_id AND c_d_id = p_c_d_id AND c_id = p_c_id; END IF; --setting of h_data is here in the TPC-C appendix h_data := ( p_w_name|| ' ' || p_d_name ); INSERT INTO history (h_c_d_id, h_c_w_id, h_c_id, h_d_id, h_w_id, h_date, h_amount, h_data) VALUES (p_c_d_id, p_c_w_id, p_c_id, p_d_id, p_w_id, timestamp, p_h_amount, h_data); COMMIT; EXCEPTION WHEN not_serializable OR deadlock OR snapshot_too_old THEN ROLLBACK; END; Stock Level Stored Procedure Script CREATE OR REPLACE PROCEDURE "ORABM"."SLEV" ( st_w_id INTEGER, st_d_id INTEGER, threshold INTEGER ) IS st_o_id NUMBER; stock_count INTEGER; not_serializable EXCEPTION; PRAGMA EXCEPTION_INIT(not_serializable,-8177); deadlock EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock,-60); snapshot_too_old EXCEPTION; PRAGMA EXCEPTION_INIT(snapshot_too_old,-1555); BEGIN SELECT d_next_o_id INTO st_o_id
  49. 49. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P49 © 2010 Bloombase Technologies FROM district WHERE d_w_id=st_w_id AND d_id=st_d_id; SELECT COUNT(DISTINCT (s_i_id)) INTO stock_count FROM order_line, stock WHERE ol_w_id = st_w_id AND ol_d_id = st_d_id AND (ol_o_id < st_o_id) AND ol_o_id >= (st_o_id - 20) AND s_w_id = st_w_id AND s_i_id = ol_i_id AND s_quantity < threshold; COMMIT; EXCEPTION WHEN not_serializable OR deadlock OR snapshot_too_old THEN ROLLBACK; END; Delivery Stored Procedure Script CREATE OR REPLACE PROCEDURE "ORABM"."DELIVERY" ( d_w_id INTEGER, d_o_carrier_id INTEGER, timestamp IN DATE ) IS d_no_o_id INTEGER; d_d_id INTEGER; d_c_id NUMBER; d_ol_total NUMBER(6,2); current_ROWID UROWID; --WHERE CURRENT OF CLAUSE IN SPECIFICATION GAVE VERY POOR PERFORMANCE --USED ROWID AS GIVEN IN DOC CDOUG Tricks and Treats by Shahs Upadhye CURSOR c_no IS SELECT no_o_id,ROWID FROM new_order WHERE no_d_id = d_d_id AND no_w_id = d_w_id ORDER BY no_o_id ASC; not_serializable EXCEPTION; PRAGMA EXCEPTION_INIT(not_serializable,-8177); deadlock EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock,-60); snapshot_too_old EXCEPTION; PRAGMA EXCEPTION_INIT(snapshot_too_old,-1555); BEGIN FOR loop_counter IN 1 .. 10 LOOP d_d_id := loop_counter; open c_no; FETCH c_no INTO d_no_o_id,current_ROWID; EXIT WHEN c_no%NOTFOUND; DELETE FROM new_order WHERE rowid = current_ROWID; close c_no; SELECT o_c_id INTO d_c_id FROM orders WHERE o_id = d_no_o_id AND o_d_id = d_d_id AND o_w_id = d_w_id; UPDATE orders SET o_carrier_id = d_o_carrier_id WHERE o_id = d_no_o_id AND o_d_id = d_d_id AND o_w_id = d_w_id; UPDATE order_line SET ol_delivery_d = timestamp WHERE ol_o_id = d_no_o_id AND ol_d_id = d_d_id AND ol_w_id = d_w_id; SELECT SUM(ol_amount) INTO d_ol_total FROM order_line
  50. 50. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P50 © 2010 Bloombase Technologies WHERE ol_o_id = d_no_o_id AND ol_d_id = d_d_id AND ol_w_id = d_w_id; UPDATE customer SET c_balance = c_balance + d_ol_total WHERE c_id = d_c_id AND c_d_id = d_d_id AND c_w_id = d_w_id; COMMIT; DBMS_OUTPUT.PUT_LINE('D: ' || d_d_id || 'O: ' || d_no_o_id || 'time ' || timestamp); END LOOP; EXCEPTION WHEN not_serializable OR deadlock OR snapshot_too_old THEN ROLLBACK; END;
  51. 51. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P51 © 2010 Bloombase Technologies Appendix C - Batch Process SQL Scripts Find Orders By Amount And Customer Balance and Discount Query set time off echo on feedback on autotrace off timing start select * from (select * from ORDERS, ORDER_LINE, ITEM, CUSTOMER where ORDER_LINE.OL_W_ID = ORDERS.O_W_ID and ORDER_LINE.OL_O_ID = ORDERS.O_ID and ORDER_LINE.OL_D_ID = ORDERS.O_D_ID and ORDER_LINE.OL_I_ID = ITEM.I_ID and ORDERS.O_W_ID = CUSTOMER.C_W_ID and ORDERS.O_D_ID = CUSTOMER.C_D_ID and ORDERS.O_C_ID = CUSTOMER.C_ID and ORDER_LINE.OL_AMOUNT > 28 and ORDER_LINE.OL_AMOUNT < 39 and CUSTOMER.C_BALANCE > 0 and CUSTOMER.C_DISCOUNT > 0.1 and CUSTOMER.C_DISCOUNT < 0.2 order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc) where ROWNUM <= 10; timing stop
  52. 52. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P52 © 2010 Bloombase Technologies Find Orders By Amount Query set time off echo on feedback on autotrace off timing start select * from (select * from ORDERS, ORDER_LINE, ITEM, CUSTOMER where ORDER_LINE.OL_W_ID = ORDERS.O_W_ID and ORDER_LINE.OL_O_ID = ORDERS.O_ID and ORDER_LINE.OL_D_ID = ORDERS.O_D_ID and ORDER_LINE.OL_I_ID = ITEM.I_ID and ORDERS.O_W_ID = CUSTOMER.C_W_ID and ORDERS.O_D_ID = CUSTOMER.C_D_ID and ORDERS.O_C_ID = CUSTOMER.C_ID and ORDER_LINE.OL_AMOUNT > 28 and ORDER_LINE.OL_AMOUNT < 39 order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc) where ROWNUM <= 10; timing stop Find Customer By Name Query set time off echo on feedback on autotrace off timing start select * from (select * from CUSTOMER where CUSTOMER.C_LAST like 'E%' and CUSTOMER.C_FIRST like 'E%' order by CUSTOMER.C_LAST asc, CUSTOMER.C_FIRST asc) where ROWNUM <= 10; timing stop Find Items Under Stock Query set time off echo on feedback on autotrace off timing start select * from (select * from STOCK, ITEM, WAREHOUSE where STOCK.S_I_ID = ITEM.I_ID and STOCK.S_W_ID = WAREHOUSE.W_ID and S_QUANTITY < 10 order by WAREHOUSE.W_NAME asc) where ROWNUM <= 10; timing stop
  53. 53. Performance Benchmarks for Bloombase Spitfire StoreSafe Security Server for Microsoft Windows P53 © 2010 Bloombase Technologies Update Order Line By Amount Query set time off echo on feedback on autotrace off timing start update ORDER_LINE set OL_DIST_INFO = OL_DIST_INFO where OL_AMOUNT > 18 and OL_AMOUNT < 19 timing stop

×