Merge branch 'Wikidata', remote-tracking branch 'origin/Wikidata' into Wikidata
[mediawiki.git] / maintenance / benchmarks / bench_delete_truncate.php
blob7138552048016fa7862cb79c7b5eca05c28c9936
1 <?php
2 /**
3 * @file
4 * @ingroup Benchmark
5 */
7 require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
9 class BenchmarkDeleteTruncate extends Benchmarker {
11 public function __construct() {
12 parent::__construct();
13 $this->mDescription = "Benchmarks SQL DELETE vs SQL TRUNCATE.";
16 public function execute() {
17 $dbw = wfGetDB( DB_MASTER );
19 $test = $dbw->tableName( 'test' );
20 $dbw->query( "CREATE TABLE IF NOT EXISTS /*_*/$test (
21 test_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
22 text varbinary(255) NOT NULL
23 );" );
25 $this->insertData( $dbw );
27 $start = wfTime();
29 $this->delete( $dbw );
31 $end = wfTime();
33 echo "Delete: " . $end - $start;
34 echo "\r\n";
36 $this->insertData( $dbw );
38 $start = wfTime();
40 $this->truncate( $dbw );
42 $end = wfTime();
44 echo "Truncate: " . $end - $start;
45 echo "\r\n";
47 $dbw->dropTable( 'test' );
50 /**
51 * @param $dbw DatabaseBase
52 * @return void
54 private function insertData( $dbw ) {
55 $range = range( 0, 1024 );
56 $data = array();
57 foreach( $range as $r ) {
58 $data[] = array( 'text' => $r );
60 $dbw->insert( 'test', $data, __METHOD__ );
63 /**
64 * @param $dbw DatabaseBase
65 * @return void
67 private function delete( $dbw ) {
68 $dbw->delete( 'text', '*', __METHOD__ );
71 /**
72 * @param $dbw DatabaseBase
73 * @return void
75 private function truncate( $dbw ) {
76 $test = $dbw->tableName( 'test' );
77 $dbw->query( "TRUNCATE TABLE $test" );
81 $maintClass = "BenchmarkDeleteTruncate";
82 require_once( RUN_MAINTENANCE_IF_MAIN );