Benchmarking of Relational DB

To show benchmarking, below General Purpose mysql RDS created
SHOW VARIABLES LIKE "%version%";
innodb_version
5.6.16
protocol_version
10
slave_type_conversions
tls_version
TLSv1,TLSv1.1,TLSv1.2
tokudb_version
7.5.6
version
5.6.16-log
version_comment
Source distribution
version_compile_compiler
GNU
version_compile_compiler_major
4
version_compile_compiler_minor
8
version_compile_machine
x86_64
version_compile_os
Linux

-- ** TEST 1 ** First, This test load 10,000,000 random genrated records via a stored procedure.  
  
CREATE TABLE MY_FACT  
(  
   DATE_DIM_DATE_ID         INT,  
   BRANCH_DIM_BRANCH_ID     INT,  
   PRODUCT_DIM_PRODUCT_ID   INT,  
   ACCOUNT_DIM_ACCOUNT_ID   INT,  
   MY_FACT_REVENUE          float,  
   MY_FACT_COST             float,  
   MY_FACT_REVENUE2         float,  
   MY_FACT_COST2            float  
);  
--SuccessTime Consumed[3ms.]  
  
CREATE INDEX MY_FACT_CL01 ON MY_FACT (DATE_DIM_DATE_ID);  
--SuccessTime Consumed[4ms.]  
  
-- Stored procedure that loaded the table MY_FACT via insert  
DELIMITER $$  
CREATE PROCEDURE InsertRand(IN NumRows INTIN MinVal INTIN MaxVal INT)  
    BEGIN  
        DECLARE i INT;  
        SET i = 1;  
        START TRANSACTION;  
        WHILE i <= NumRows DO  
            INSERT INTO MY_FACT VALUES ((MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))),  
                                        (MinVal + CEIL(RAND() * (MaxVal - MinVal))));  

            SET i = i + 1;  
        END WHILE;  
        COMMIT;  
    END$$  
DELIMITER ;  
--SuccessTime Consumed[1ms.]  
  
--The table was loaded by calling the stored procedure.  
CALL InsertRand(10000000, 111, 999999);  
  
--SuccessTime Consumed[430337ms.]  
--Start Time: 22:28, Metric 1 we can see the Spike  
  
- ** TEST 2 ** Second, This test load 10,000,000 records from the first table to the second via a single insert statement.  
  
CREATE TABLE MY_FACT2  
(  
   DATE_DIM_DATE_ID         INT,  
   BRANCH_DIM_BRANCH_ID     INT,  
   PRODUCT_DIM_PRODUCT_ID   INT,  
   ACCOUNT_DIM_ACCOUNT_ID   INT,  
   MY_FACT_REVENUE          float,  
   MY_FACT_COST             float,  
   MY_FACT_REVENUE2         float,  
   MY_FACT_COST2            float  
);  
  
INSERT INTO MY_FACT2  
--SuccessRows Affected[10000000]Time Consumed[53820ms.]  
--Start Time: 22:40  
  
-- ** TEST 3 ** Third, the test load 10,000,000 records from the first table to the third via a CTAS.  
  
CREATE TABLE MY_FACT3 AS SELECT * FROM MY_FACT;  
--SuccessTime Consumed[52390ms.]  
--Start Time: 22:44  
  
-- ** TEST 4 ** Finally, 10,000,000 rows were updated by a single update statement.  
  
UPDATE MY_FACT3   
   SET MY_FACT3.MY_FACT_COST = 0,  
       MY_FACT3.MY_FACT_REVENUE = 11111111,  
      MY_FACT3.MY_FACT_REVENUE2 = 999999.99;  
--SuccessRows Affected[10000000]Time Consumed[40410ms.]  
--Start Time: 22:47  

RESULTS:
Metric 1: CPU + Memory spike during TEST 1, Second Spike is for TEST 3
Metric 2: Disk Space usage during tests:

Metric 3: IOPS per sec. Second Spike for Test 3 is highest


Max allowed connections:
SHOW VARIABLES LIKE "max_connections"
max_connections        812


Other Important Metrics:




For other performance benchmarking refer:

Post a Comment

Thanks for your comment !
I will review your this and will respond you as soon as possible.