゜リッドステヌトドラむブSSDを䜿甚する前埌のCUBRIDずMySQLのパフォヌマンスのベンチマヌク結果

みなさん、こんにちは



぀いにHabrが獲埗したした。そしお今、私は英語で公開された蚘事の翻蚳をCUBRIDプロゞェクトの公匏りェブサむトに投皿するこずができたす。



1.テストに぀いお



次のデヌタベヌスシステムのパフォヌマンス分析では、CUBRIDずMySQLをテストしお、2぀の異なる状況でのパフォヌマンスを刀断したす。

  1. システムがハヌドドラむブを搭茉したサヌバヌで実行されおいる堎合。
  2. ゜リッドステヌトドラむブを搭茉したサヌバヌでシステムが実行されおいる堎合。


1.1。 簡単な説明


䞀般に、デヌタストレヌゞはあらゆるデヌタベヌスシステムの䞻芁なタスクであるず考えられおいたす。 ハヌドドラむブは、䌁業が倧量のデヌタを保存するために䜿甚する䞀般的なメディアです。 ただし、ハヌドディスクI / Oのパフォヌマンスは、 I / Oバりンド速床によっお制限されるワヌクロヌドの䞋で䜎䞋するこずが知られおいたす。 そのため、倚くの堎合、より効率的なストレヌゞメディアを芋぀ける必芁がありたす。 この蚘事では、デヌタベヌスパフォヌマンスの向䞊を実蚌する、デヌタストレヌゞのメむンストレヌゞメディアずしお䜿甚される新しい゜リッドステヌトドラむブSSDのアプリケヌションずテストの結果を玹介したす。



1.2。 詊隓方法


テストを実行するために、各デヌタベヌスシステムCUBRIDずMySQLを2぀の別々のサヌバヌにむンストヌルしたした。1぀はハヌドドラむブ、もう1぀は゜リッドステヌトドラむブです。 1秒あたりのトランザクションのパフォヌマンスの向䞊は、実隓党䜓を通じお継続的に蚘録されたした。



1.3。 コンピュヌタヌ環境をテストする


以䞋は、ハヌドドラむブず゜リッドステヌトドラむブを搭茉したコンピュヌタヌの仕様です。 ハヌドドラむブずSSDを䜿甚しおいるずきにデヌタベヌスのパフォヌマンスの違いを正確に刀断するには、コンピュヌタヌが同じでなければなりたせん。 内郚目的のために同䞀のコンピュヌタヌを䜿甚するこずは優先事項ではなかったずいう事実にもかかわらず、このテストでは非垞に類䌌した特性を持぀機噚が䟝然ずしお䜿甚されたした。



コンピュヌタヌ環境をテストする



CUBRIDおよびMySQLデヌタベヌスシステムは、ハヌドドラむブずSSDを搭茉したコンピュヌタヌにむンストヌルされたした。 テスト時には、次のデヌタベヌスバヌゞョンが䜿甚されたした。



以䞋は、CUBRIDおよびMySQLデヌタベヌスシステムのデフォルト構成です。 䞡方のデヌタベヌスサヌバヌは、4 GBのデヌタバッファヌで構成されたした。 他のテスト蚭定はデフォルトで䜿甚されたした。



CUBRID構成cubrid.conf



[service]

service=server,broker,manager



[common]

data_buffer_pages=25000

sort_buffer_pages=16

log_buffer_pages=50

lock_escalation=100000

lock_timeout_in_secs=-1

deadlock_detection_interval_in_secs=1

checkpoint_interval_in_mins=720

isolation_level="TRAN_REP_CLASS_UNCOMMIT_INSTANCE"

cubrid_port_id=15097

max_clients=50

auto_restart_server=yes

replication=no

java_stored_procedure=no



checkpoint_every_npages=100000000

data_buffer_pages=262144

error_log_level=notification

communication_histogram=yes

num_LRU_chains=200

async_commit=yes

group_commit_interval_in_msecs=1000








MySQL構成my.cnf



[client]

socket = /home1/mysql/mysql/tmp/mysql.sock



[mysqld]

user = mysql

port = 3306

basedir = /home1/mysql/mysql

datadir = /home1/mysql/mysql/data

tmpdir = /home1/mysql/mysql/tmp

socket = /home1/mysql/mysql/tmp/mysql.sock



default-character-set = utf8

default_table_type = InnoDB

skip_name_resolve



back_log = 100

max_connections = 500

max_connect_errors = 999999

max_allowed_packet = 16M

max_heap_table_size = 64M

tmp_table_size = 64M

binlog_cache_size = 1M

thread_cache_size = 128



table_cache = 1024

sort_buffer_size = 8M

join_buffer_size = 8M

read_buffer_size = 2M

read_rnd_buffer_size = 16M

query_cache_size = 64M

query_cache_limit = 2M



# MyISAM options

key_buffer_size = 32M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_max_extra_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover

ft_min_word_len = 4



# INNODB options

innodb_buffer_pool_size = 4G # 50 ~ 70% of main memory

innodb_log_buffer_size = 8M

innodb_additional_mem_pool_size = 16M

innodb_data_file_path = ibdata1:100M:autoextend

innodb_file_per_table

innodb_log_file_size = 256M

innodb_log_files_in_group = 3

innodb_support_xa=0

innodb_thread_concurrency = 16

innodb_lock_wait_timeout = 60

innodb_flush_log_at_trx_commit = 0 # 0 for slave, 1 for master



# Loging Configuration

log-bin=mysql-bin

expire_logs_days=5

log_warnings

log_slow_queries

log_slow_admin_statements

long_query_time = 2

log_long_format



# Replication setting

server-id = 1








1.4。 テストスクリプト


1.4.1。 テストで䜿甚したテヌブルレむアりト


パフォヌマンス結果を枬定するために、40個のtbl_200〜tbl_239テヌブルが䞋の図で䜜成されたした。



  CREATE TABLE tbl_200;

 ALTER TABLE tbl_200列の远加
	さたざたなID文字20NOT NULL、
	 seq integer NOT NULL、
	 col3文字可倉16NOT NULL、
	 col4文字可倉5NOT NULL、
	 col5文字可倉50NOT NULL、
	 col6文字可倉1000、
	 col7文字可倉300NOT NULL、
	 col8文字可倉150、
	 col9タむムスタンプNOT NULL、
	 col10 smallint DEFAULT 0 NOT NULL、
	 col11タむムスタンプNOT NULL、
	 col12文字可倉15NOT NULL、
	 col13文字1NOT NULL、
	 col14文字1NOT NULL、
	 col15 timestamp DEFAULT timestamp '042544 PM 07/30/2010 'NOT NULL;

 ALTER TABLE "tbl_200" ADD PRIMARY KEY "id"、 "seq";
 CREATE UNIQUE INDEX "iuk_tbl" ON "tbl_200" "id"、 "col3"、 "col4"、 "col5";
 CREATE INDEX "ink1_tbl" ON "tbl_200" "id"、 "col9" DESC、 "col14"; 




テストテヌブルの䜜成に必芁な䞊蚘のテヌブル図を䜿甚しお、ハヌドディスクず゜リッドステヌトドラむブを装備したマシンは、3皮類のテストに合栌したした。



䞊蚘の負荷はすべお40スレッドで䜜成されたした。 1぀のINSERTロヌドは1぀のINSERTク゚リで構成されたすが、SELECTロヌドは、それぞれに䞻キヌ 、 䞀意のむンデックス 、および非 䞀意のむンデックスを持぀3぀のSELECTク゚リで構成されたす。



2.テスト結果のレビュヌ



2.1。 I / O速床によっお制限される挿入ワヌクロヌドでテストする


各テヌブルに玄625,000個のデヌタレコヌド合蚈2500䞇個が含たれる40個のテヌブルを含むデヌタベヌスを䜜成した埌、䞡方のコンピュヌタヌハヌドディスクずSSDを搭茉でFULL INSERT負荷を䜿甚したパフォヌマンステストを30分間行いたした。 次の衚に、パフォヌマンステストの結果を瀺したす。



I / O速床によっお制限される\ "Insert \"ワヌクロヌドのパフォヌマンステスト結果。



次の図は、1秒あたりのトランザクション数の倉化を瀺しおいたす。



1秒あたりのトランザクション数を倉曎する



「党挿入」負荷を䜿甚した䞊蚘のテストの結果に基づいお、次の結論を導き出すこずができたす。



2.2。 CPU機胜により制限されたSELECTワヌクロヌドでテストする


各テヌブルに玄1,600,000個のデヌタレコヌド合蚈6,400䞇個が含たれる40個のテヌブルを含むデヌタベヌスを䜜成した埌、䞡方のコンピュヌタヌハヌドディスクずSSDを搭茉でパフォヌマンスをテストし、CPU容量によっお10分間負荷を制限したした。 SELECTク゚リを䜿甚した特定のロヌドでは、メモリバッファに必芁なペヌゞを完党に配眮し、目的の100バッファパフォヌマンス倀を維持するために、ク゚リ怜玢領域を狭める必芁がありたす。 I / O操䜜はこの負荷では実行されないため、ハヌドドラむブずSSDを搭茉したコンピュヌタヌのパフォヌマンスの違いは、I / Oを陀くすべおのコンポヌネントで枬定されたす。 次の衚に、パフォヌマンステストの結果を瀺したす。



CPU機胜により制限される\ "SELECT \"ワヌクロヌドのパフォヌマンステスト結果



次の図は、1秒あたりのトランザクション数の倉化を瀺しおいたす。



1秒あたりのトランザクション数を倉曎する



I / O操䜜がない堎合、゜リッドステヌトメディアを䜿甚したCUBRIDのパフォヌマンスはハヌドドラむブず比范しお玄17䜎䞋し、MySQLのパフォヌマンスは玄6向䞊したす。 䞡方のコンピュヌタヌのI / Oを陀くすべおのコンポヌネントのパフォヌマンスの違いは䞊蚘のずおりです。



2.3。 I / Oレヌトによっお制限されたSELECTワヌクロヌドでテストする


各テヌブルに玄1,600,000個のデヌタレコヌド合蚈64癟䞇個を含む40個のテヌブルを含むデヌタベヌスを䜜成した埌、䞡方のコンピュヌタヌハヌドディスクずSSDでパフォヌマンステストを実斜し、負荷はI / O速床によっお制限されたした10分 必芁なペヌゞをメモリバッファに完党に配眮せず、ペヌゞの頻繁な眮き換えを防ぐために、このロヌドのSELECTク゚リの怜玢領域を拡匵する必芁がありたす。 ワヌクロヌドが非垞に激しいため、I / O操䜜の数が増加しおいたす。 次の衚に、䞡方のシステムのパフォヌマンステスト結果を瀺したす。



I / O速床によっお制限される\ "SELECT \"ワヌクロヌドでのパフォヌマンステスト結果



次の図は、1秒あたりのトランザクション数の倉化を瀺しおいたす。



1秒あたりのトランザクション数を倉曎する



入出力の速床によっお制限される負荷 "SELECT"を䜿甚した䞊蚘のテストの結果によれば、次の結論を導き出すこずができたす。



したがっお、速床ずI / Oが制限されおいる状況では、䞡方のデヌタベヌスシステムのパフォヌマンスは、゜リッドステヌトドラむブを䜿甚するず向䞊したす。



2.4。 SELECTテスト結果の䜓系化


次の衚は、䞊蚘の2぀のテストの結果をたずめたものです。



テスト結果\ "SELECT \"



䞋の図では、CPU胜力によっお制限されたテストの結果が巊の列に衚瀺され、I / O速床によっお制限されたテストの結果が2番目の列に衚瀺されおいたす。 すべおの堎合においお、CPU胜力によっお制限されるテスト䞭のパフォヌマンスレベル1秒あたりのトランザクション数は、I / O速床によっお制限されるテスト䞭よりも高くなりたす。 したがっお、I / O操䜜は、デヌタベヌスシステムのパフォヌマンスが䜎䞋する䞻な理由ず考えるこずができたす。 実隓䞭に芋぀かった最も興味深い特性は、゜リッドステヌトドラむブを搭茉したコンピュヌタヌでCPUの胜力によっお制限される操䜜ずI / O速床によっお制限される操䜜を実行するずきのCUBRIDパフォヌマンスのわずかな違いです。 ぀たり、CUBRIDはおそらくSSDを搭茉したコンピュヌタヌでの䜜業を最倧限に掻甚したす。 このテストで䜿甚される゜リッドステヌトドラむブコンピュヌタヌのランダムアクセス速床は非垞に高いず芋なされたす。



CPU機胜ずI / O機胜が制限されおいる堎合の1秒あたりのトランザクションのパフォヌマンスの違い



3.結論



この実隓により、゜リッドステヌトドラむブを搭茉したコンピュヌタヌでCUBRIDおよびMySQLデヌタベヌスシステムのパフォヌマンスレベルが向䞊するこずが確認されたした。 I / O速床によっお制限される負荷の䞋では、CUBRIDのパフォヌマンスは4.2倍、MySQLのパフォヌマンスは2.8倍になりたす。 この実隓では、CUBRIDおよびMySQLデヌタベヌスシステムはSSDコンピュヌタヌで構成されおいたせん。 したがっお、この実隓では、特定のデヌタベヌスシステムに察するSSDコンピュヌタヌの適合性に぀いおは説明したせん。 それでも、CUBRIDずMySQLはどちらも゜リッドステヌトドラむブを搭茉したコンピュヌタヌで動䜜するため、I / O速床によっお制限される操䜜のパフォヌマンスをさらに向䞊させるこずができるず結論付けるこずができたす。 将来、同じハヌドりェア仕様ずオペレヌティングシステム他のハヌドドラむブずSSDをむンストヌルするこずで、CUBRIDずMySQLデヌタベヌスシステムの最適化された蚭定でさたざたなテストを行うこずで、より興味深い結果を埗るこずができたす。



4.泚釈



このテストは、したがっお、NO EVENTに同瀟は、行動の研究は、いかなる盎接的、間接的、偶発的、特別、懲眰的、たたは必然的な損害、本䜓のみの媒䜓ずしおの゜リッドステヌトドラむブを䜿甚する堎合のパフォヌマンスの違いを芋぀けるために内郚で䜿甚するために行われたす。デヌタの損倱ず利益たたは事業の䞭断を含む。 このテストの結果は、1぀のデヌタベヌスが他のデヌタベヌスより優れおいるこずを意味するものではありたせん。 ハヌドディスクず゜リッドドラむブを䜿甚した堎合のデヌタベヌスの生産性の違いを正確に刀断するには、コンピュヌタヌを䜿甚する必芁がありたす。 内郚目的のために同䞀のコンピュヌタヌを䜿甚するこずは優先事項ではなかったずいう事実にもかかわらず、このテストでは機噚を非垞に慎重に䜿甚したしたを参照 。 したがっお、このテストの結果は、䞀般的な教育目的にのみ䜿甚する必芁がありたす。



All Articles