2016-07-25 4 views
0

私は、ユーザーが特定の遺伝子を照会し、異なる遺伝子セット間のさまざまな統計を計算できるようにする、生化学研究者用のウェブサイトを作成しました。MYSQLメモリ最適化の読み取り専用DB

MySQLデータベースは16GBで、読み取り専用です(私たちの研究室でこの新しいデータが生成され、このデータを表示するポータルはこのWebサイトです)。ウェブサイトのパフォーマンスをテストして、DBクエリがアプリの中で最も遅いことに気付きました。 DB全体をメモリに格納したいが、一般的に受け入れられるソリューションにはいくつかの問題がありました。

私は8コアの32GBサーバーを使用しています。

オプション1:設定ENGINE = MEMORY

少数の列はタイプmediumtextのものであり、64K行の制限を超えてMEMORY ENGINE

オプション2に投入されることを拒否する:innodb_buffer_pool_size

増加します

これは実際にデータをメモリに格納しているようではありません。私は使用されたバッファプールを(https://dba.stackexchange.com/questions/27328/how-large-should-be-mysql-innodb-buffer-pool-size)のテクニックを使ってチェックしましたが、使用されたバッファプールは〜100Mbsしか見ませんでした。 innodb_buffer_pool_sizeは24GBに正しく設定されています。

オプション3:RAMディスクを作成し、そこに 上でDBを置くこれは、いくつかのSOの記事をもとに偉大なオプションのようには思えません。

どうすればいいですか?お知らせ下さい。

+0

を最適化することができ、ここで

をプロファイリングするための

サンプル?すべてのクエリを最適なインデックスに使用しますか?あなたはテーブルと行について少し詳しく教えてください。 –

+0

バッファは、dbが使われている間だけ時間がたてば満たされます。あなたは実際にそれが変動する負荷の下で、しばらく走らせましたか? –

+0

作業しているデータを*使用していないと、バッファープールがいっぱいになりません。いったん使用すると、MySQLはディスクからそれを読み取り、それをバッファプール(RAM)に追加するので、次に対処するときにそれがあります。一時的なブラックホールテーブルを作成し、それにデータをロードすることによって、バッファプールをプリロードするためのトリックがあります: 'CREATE TEMPORARY TABLE preload ENGINE = BLACKHOLE SELECT * FROM table_to_preload_into_buffer_pool'。私は起動時にこれをプリロードできる設定オプションがあるかどうかはわかりませんが、これはバッファプールをプリロードするのに役立ちます。 –

答えて

1

EXPLAINとプロファイリングを確認しましたか?あなたは、サーバーが時間を費やしている場所を確認し、すべてのクエリがOKであれば、この

MariaDB [yourschema]> set profiling=on; 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [yourschema]> select * from table2 t1 left join table2 t2 ON t1.id <> t2.id;; 
+--------+------------+--------+------------+ 
| id  | val  | id  | val  | 
+--------+------------+--------+------------+ 
| 000002 | tabe 2 --2 | 000001 | tabe 2 --1 | 
.... 
| 000005 | tabe 2 --5 | 000004 | tabe 2 --4 | 
| 000006 | tabe 2 --6 | 000004 | tabe 2 --4 | 
| 000001 | tabe 2 --1 | 000005 | tabe 2 --5 | 
| 000002 | tabe 2 --2 | 000005 | tabe 2 --5 | 
| 000004 | tabe 2 --4 | 000005 | tabe 2 --5 | 
| 000006 | tabe 2 --6 | 000005 | tabe 2 --5 | 
| 000001 | tabe 2 --1 | 000006 | tabe 2 --6 | 
| 000002 | tabe 2 --2 | 000006 | tabe 2 --6 | 
| 000004 | tabe 2 --4 | 000006 | tabe 2 --6 | 
| 000005 | tabe 2 --5 | 000006 | tabe 2 --6 | 
+--------+------------+--------+------------+ 
20 rows in set (0.00 sec) 


MariaDB [yourschema]> show profile all; 
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+ 
| Status    | Duration | CPU_user | CPU_system | Context_voluntary | Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent | Messages_received | Page_faults_major | Page_faults_minor | Swaps | Source_function  | Source_file | Source_line | 
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+ 
| starting    | 0.000113 | 0.000072 | 0.000041 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     2 |  0 | NULL     | NULL   |  NULL | 
| checking permissions | 0.000006 | 0.000003 | 0.000003 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | check_access   | sql_parse.cc |  6051 | 
| checking permissions | 0.000005 | 0.000004 | 0.000001 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | check_access   | sql_parse.cc |  6051 | 
| Opening tables  | 0.000307 | 0.000071 | 0.000236 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     9 |  0 | open_tables   | sql_base.cc |  4509 | 
| After opening tables | 0.000010 | 0.000006 | 0.000003 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | open_tables   | sql_base.cc |  4747 | 
| System lock   | 0.000005 | 0.000004 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_lock_tables  | lock.cc  |   308 | 
| Table lock   | 0.000010 | 0.000009 | 0.000001 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_lock_tables  | lock.cc  |   313 | 
| init     | 0.000027 | 0.000025 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_select   | sql_select.cc |  3427 | 
| optimizing   | 0.000014 | 0.000012 | 0.000001 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | optimize_inner  | sql_select.cc |  1092 | 
| statistics   | 0.000022 | 0.000021 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | optimize_inner  | sql_select.cc |  1373 | 
| preparing   | 0.000117 | 0.000037 | 0.000084 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     4 |  0 | optimize_inner  | sql_select.cc |  1398 | 
| executing   | 0.000010 | 0.000004 | 0.000003 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | exec_inner   | sql_select.cc |  2551 | 
| Sending data   | 0.000106 | 0.000102 | 0.000003 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | exec_inner   | sql_select.cc |  3223 | 
| end     | 0.000007 | 0.000004 | 0.000003 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_select   | sql_select.cc |  3462 | 
| query end   | 0.000008 | 0.000006 | 0.000001 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_execute_command | sql_parse.cc |  5687 | 
| closing tables  | 0.000004 | 0.000003 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | close_thread_tables | sql_base.cc |   935 | 
| Unlocking tables  | 0.000008 | 0.000007 | 0.000001 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_unlock_tables | lock.cc  |   395 | 
| freeing items  | 0.000008 | 0.000006 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | mysql_parse   | sql_parse.cc |  7319 | 
| updating status  | 0.000023 | 0.000008 | 0.000015 |     0 |     0 |   0 |    0 |    1 |     0 |     0 |     0 |  0 | dispatch_command  | sql_parse.cc |  1937 | 
| cleaning up   | 0.000004 | 0.000002 | 0.000002 |     0 |     0 |   0 |    0 |    0 |     0 |     0 |     0 |  0 | dispatch_command  | sql_parse.cc |  1956 | 
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+ 
20 rows in set (0.00 sec) 

MariaDB [yourschema]> 
関連する問題