ฉันใช้เครื่องมือเก็บข้อมูล MEMORY แต่ MySQL ยังคงเขียนลงในดิสก์ของฉัน…ทำไม


9

ฉันใช้MEMORY Engineสำหรับตารางทั้งหมดที่เกี่ยวข้องกับแบบสอบถาม MYSQL เฉพาะเนื่องจากความเร็วในการเข้าถึงเป็นสิ่งสำคัญยิ่งสำหรับโครงการของฉัน

ด้วยเหตุผลบางอย่างฉันสังเกตว่าการเขียนดิสก์จำนวนมากยังคงเกิดขึ้น

เป็นเพราะ Windows สลับแรมกับดิสก์หรือไม่ ฉันจะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ได้อย่างไร

แก้ไข: นี่คือตัวแปรทั่วโลกของฉัน:

mysql> show global variables;
+---------------------------------------------------+--------------------------------------------------------------------------------
------------------------------+
| Variable_name                                     | Value
                              |
+---------------------------------------------------+--------------------------------------------------------------------------------
------------------------------+
| auto_increment_increment                          | 1
                              |
| auto_increment_offset                             | 1
                              |
| autocommit                                        | ON
                              |
| automatic_sp_privileges                           | ON
                              |
| back_log                                          | 50
                              |
| basedir                                           | C:/Program Files/MySQL/MySQL Server 5.5/
                              |
| big_tables                                        | OFF
                              |
| binlog_cache_size                                 | 32768
                              |
| binlog_direct_non_transactional_updates           | OFF
                              |
| binlog_format                                     | STATEMENT
                              |
| binlog_stmt_cache_size                            | 4096
                              |
| bulk_insert_buffer_size                           | 8388608
                              |
| character_set_client                              | latin1
                              |
| character_set_connection                          | latin1
                              |
| character_set_database                            | latin1
                              |
| character_set_filesystem                          | binary
                              |
| character_set_results                             | latin1
                              |
| character_set_server                              | latin1
                              |
| character_set_system                              | utf8
                              |
| character_sets_dir                                | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\
                              |
| collation_connection                              | latin1_swedish_ci
                              |
| collation_database                                | latin1_swedish_ci
                              |
| collation_server                                  | latin1_swedish_ci
                              |
| completion_type                                   | NO_CHAIN
                              |
| concurrent_insert                                 | AUTO
                              |
| connect_timeout                                   | 10
                              |
| datadir                                           | C:\ProgramData\MySQL\MySQL Server 5.5\Data\
                              |
| date_format                                       | %Y-%m-%d
                              |
| datetime_format                                   | %Y-%m-%d %H:%i:%s
                              |
| default_storage_engine                            | MyISAM
                              |
| default_week_format                               | 0
                              |
| delay_key_write                                   | OFF
                              |
| delayed_insert_limit                              | 100
                              |
| delayed_insert_timeout                            | 300
                              |
| delayed_queue_size                                | 1000
                              |
| div_precision_increment                           | 4
                              |
| engine_condition_pushdown                         | ON
                              |
| event_scheduler                                   | OFF
                              |
| expire_logs_days                                  | 0
                              |
| flush                                             | OFF
                              |
| flush_time                                        | 1800
                              |
| foreign_key_checks                                | ON
                              |
| ft_boolean_syntax                                 | + -><()~*:""&|
                              |
| ft_max_word_len                                   | 84
                              |
| ft_min_word_len                                   | 4
                              |
| ft_query_expansion_limit                          | 20
                              |
| ft_stopword_file                                  | (built-in)
                              |
| general_log                                       | OFF
                              |
| general_log_file                                  | C:\ProgramData\MySQL\MySQL Server 5.5\Data\FXMachine.log
                              |
| group_concat_max_len                              | 1024
                              |
| have_compress                                     | YES
                              |
| have_crypt                                        | NO
                              |
| have_csv                                          | YES
                              |
| have_dynamic_loading                              | YES
                              |
| have_geometry                                     | YES
                              |
| have_innodb                                       | DISABLED
                              |
| have_ndbcluster                                   | NO
                              |
| have_openssl                                      | DISABLED
                              |
| have_partitioning                                 | YES
                              |
| have_profiling                                    | YES
                              |
| have_query_cache                                  | YES
                              |
| have_rtree_keys                                   | YES
                              |
| have_ssl                                          | DISABLED
                              |
| have_symlink                                      | YES
                              |
| hostname                                          | FXMachine
                              |
| ignore_builtin_innodb                             | OFF
                              |
| init_connect                                      |
                              |
| init_file                                         |
                              |
| init_slave                                        |
                              |
| interactive_timeout                               | 28800
                              |
| join_buffer_size                                  | 25600
                              |
| keep_files_on_create                              | OFF
                              |
| key_buffer_size                                   | 25165824
                              |
| key_cache_age_threshold                           | 300
                              |
| key_cache_block_size                              | 1024
                              |
| key_cache_division_limit                          | 100
                              |
| large_files_support                               | ON
                              |
| large_page_size                                   | 0
                              |
| large_pages                                       | OFF
                              |
| lc_messages                                       | en_US
                              |
| lc_messages_dir                                   | C:\Program Files\MySQL\MySQL Server 5.5\share\
                              |
| lc_time_names                                     | en_US
                              |
| license                                           | GPL
                              |
| local_infile                                      | ON
                              |
| lock_wait_timeout                                 | 31536000
                              |
| log                                               | OFF
                              |
| log_bin                                           | OFF
                              |
| log_bin_trust_function_creators                   | OFF
                              |
| log_error                                         | C:\ProgramData\MySQL\MySQL Server 5.5\Data\FXMachine.err
                              |
| log_output                                        | FILE
                              |
| log_queries_not_using_indexes                     | OFF
                              |
| log_slave_updates                                 | OFF
                              |
| log_slow_queries                                  | OFF
                              |
| log_warnings                                      | 1
                              |
| long_query_time                                   | 10.000000
                              |
| low_priority_updates                              | OFF
                              |
| lower_case_file_system                            | ON
                              |
| lower_case_table_names                            | 1
                              |
| max_allowed_packet                                | 1048576
                              |
| max_binlog_cache_size                             | 4096
                              |
| max_binlog_size                                   | 4096
                              |
| max_binlog_stmt_cache_size                        | 4096
                              |
| max_connect_errors                                | 10
                              |
| max_connections                                   | 10
                              |
| max_delayed_threads                               | 20
                              |
| max_error_count                                   | 64
                              |
| max_heap_table_size                               | 134217728
                              |
| max_insert_delayed_threads                        | 20
                              |
| max_join_size                                     | 18446744073709551615
                              |
| max_length_for_sort_data                          | 1024
                              |
| max_long_data_size                                | 1048576
                              |
| max_prepared_stmt_count                           | 16382
                              |
| max_relay_log_size                                | 0
                              |
| max_seeks_for_key                                 | 4294967295
                              |
| max_sort_length                                   | 1024
                              |
| max_sp_recursion_depth                            | 0
                              |
| max_tmp_tables                                    | 32
                              |
| max_user_connections                              | 0
                              |
| max_write_lock_count                              | 4294967295
                              |
| min_examined_row_limit                            | 0
                              |
| multi_range_count                                 | 256
                              |
| myisam_data_pointer_size                          | 6
                              |
| myisam_max_sort_file_size                         | 2146435072
                              |
| myisam_mmap_size                                  | 18446744073709551615
                              |
| myisam_recover_options                            | OFF
                              |
| myisam_repair_threads                             | 1
                              |
| myisam_sort_buffer_size                           | 8388608
                              |
| myisam_stats_method                               | nulls_unequal
                              |
| myisam_use_mmap                                   | OFF
                              |
| named_pipe                                        | ON
                              |
| net_buffer_length                                 | 16384
                              |
| net_read_timeout                                  | 30
                              |
| net_retry_count                                   | 10
                              |
| net_write_timeout                                 | 60
                              |
| new                                               | OFF
                              |
| old                                               | OFF
                              |
| old_alter_table                                   | OFF
                              |
| old_passwords                                     | OFF
                              |
| open_files_limit                                  | 2324
                              |
| optimizer_prune_level                             | 1
                              |
| optimizer_search_depth                            | 62
                              |
| optimizer_switch                                  | index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_inter
,engine_condition_pushdown=on |
| performance_schema                                | OFF
                              |
| performance_schema_events_waits_history_long_size | 10000
                              |
| performance_schema_events_waits_history_size      | 10
                              |
| performance_schema_max_cond_classes               | 80
                              |
| performance_schema_max_cond_instances             | 1000
                              |
| performance_schema_max_file_classes               | 50
                              |
| performance_schema_max_file_handles               | 32768
                              |
| performance_schema_max_file_instances             | 10000
                              |
| performance_schema_max_mutex_classes              | 200
                              |
| performance_schema_max_mutex_instances            | 1000000
                              |
| performance_schema_max_rwlock_classes             | 30
                              |
| performance_schema_max_rwlock_instances           | 1000000
                              |
| performance_schema_max_table_handles              | 100000
                              |
| performance_schema_max_table_instances            | 50000
                              |
| performance_schema_max_thread_classes             | 50
                              |
| performance_schema_max_thread_instances           | 1000
                              |
| pid_file                                          | C:\ProgramData\MySQL\MySQL Server 5.5\Data\FXMachine.pid
                              |
| plugin_dir                                        | C:\Program Files\MySQL\MySQL Server 5.5\lib/plugin
                              |
| port                                              | 0
                              |
| preload_buffer_size                               | 32768
                              |
| profiling                                         | OFF
                              |
| profiling_history_size                            | 15
                              |
| protocol_version                                  | 10
                              |
| query_alloc_block_size                            | 8192
                              |
| query_cache_limit                                 | 1048576
                              |
| query_cache_min_res_unit                          | 4096
                              |
| query_cache_size                                  | 0
                              |
| query_cache_type                                  | OFF
                              |
| query_cache_wlock_invalidate                      | OFF
                              |
| query_prealloc_size                               | 8192
                              |
| range_alloc_block_size                            | 4096
                              |
| read_buffer_size                                  | 67108864
                              |
| read_only                                         | OFF
                              |
| read_rnd_buffer_size                              | 4194304
                              |
| relay_log                                         |
                              |
| relay_log_index                                   |
                              |
| relay_log_info_file                               | relay-log.info
                              |
| relay_log_purge                                   | ON
                              |
| relay_log_recovery                                | OFF
                              |
| relay_log_space_limit                             | 0
                              |
| report_host                                       |
                              |
| report_password                                   |
                              |
| report_port                                       | 3306
                              |
| report_user                                       |
                              |
| rpl_recovery_rank                                 | 0
                              |
| secure_auth                                       | OFF
                              |
| secure_file_priv                                  |
                              |
| server_id                                         | 0
                              |
| shared_memory                                     | OFF
                              |
| shared_memory_base_name                           | MYSQL
                              |
| skip_external_locking                             | ON
                              |
| skip_name_resolve                                 | OFF
                              |
| skip_networking                                   | ON
                              |
| skip_show_database                                | OFF
                              |
| slave_compressed_protocol                         | OFF
                              |
| slave_exec_mode                                   | STRICT
                              |
| slave_load_tmpdir                                 | C:\Windows\TEMP
                              |
| slave_net_timeout                                 | 3600
                              |
| slave_skip_errors                                 | OFF
                              |
| slave_transaction_retries                         | 10
                              |
| slave_type_conversions                            |
                              |
| slow_launch_time                                  | 2
                              |
| slow_query_log                                    | OFF
                              |
| slow_query_log_file                               | C:\ProgramData\MySQL\MySQL Server 5.5\Data\FXMachine-slow.log
                              |
| socket                                            | mysql
                              |
| sort_buffer_size                                  | 32768
                              |
| sql_auto_is_null                                  | OFF
                              |
| sql_big_selects                                   | ON
                              |
| sql_big_tables                                    | OFF
                              |
| sql_buffer_result                                 | OFF
                              |
| sql_log_bin                                       | OFF
                              |
| sql_log_off                                       | OFF
                              |
| sql_low_priority_updates                          | OFF
                              |
| sql_max_join_size                                 | 18446744073709551615
                              |
| sql_mode                                          | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                              |
| sql_notes                                         | ON
                              |
| sql_quote_show_create                             | ON
                              |
| sql_safe_updates                                  | OFF
                              |
| sql_select_limit                                  | 18446744073709551615
                              |
| sql_slave_skip_counter                            | 0
                              |
| sql_warnings                                      | OFF
                              |
| ssl_ca                                            |
                              |
| ssl_capath                                        |
                              |
| ssl_cert                                          |
                              |
| ssl_cipher                                        |
                              |
| ssl_key                                           |
                              |
| storage_engine                                    | MyISAM
                              |
| sync_binlog                                       | 0
                              |
| sync_frm                                          | ON
                              |
| sync_master_info                                  | 0
                              |
| sync_relay_log                                    | 0
                              |
| sync_relay_log_info                               | 0
                              |
| system_time_zone                                  | Eastern Daylight Time
                              |
| table_definition_cache                            | 400
                              |
| table_open_cache                                  | 128
                              |
| thread_cache_size                                 | 0
                              |
| thread_concurrency                                | 10
                              |
| thread_handling                                   | one-thread-per-connection
                              |
| thread_stack                                      | 262144
                              |
| time_format                                       | %H:%i:%s
                              |
| time_zone                                         | SYSTEM
                              |
| timed_mutexes                                     | OFF
                              |
| tmp_table_size                                    | 134217728
                              |
| tmpdir                                            | C:\Windows\TEMP
                              |
| transaction_alloc_block_size                      | 8192
                              |
| transaction_prealloc_size                         | 4096
                              |
| tx_isolation                                      | REPEATABLE-READ
                              |
| unique_checks                                     | ON
                              |
| updatable_views_with_limit                        | YES
                              |
| version                                           | 5.5.11
                              |
| version_comment                                   | MySQL Community Server (GPL)
                              |
| version_compile_machine                           | x86
                              |
| version_compile_os                                | Win64
                              |
| wait_timeout                                      | 28800
                              |
+---------------------------------------------------+--------------------------------------------------------------------------------

6
มีหน่วยความจำในเครื่องเท่าใดและคุณใส่ข้อมูลลงในตารางหน่วยความจำเท่าใด
David Spillett

คำตอบ:


5

คุณอาจต้องการดูจำนวนหน่วยความจำที่คุณใช้ แม้ว่าจะมีตาราง MEMORY แต่ต้องมีตัวจัดการไฟล์ที่เปิดอยู่ใน. frm ของตาราง MEMORY ตรวจสอบ open_files_limit ของคุณ คุณอาจต้องเพิ่มมันเช่นกัน

คุณมีความแตกต่างที่ดีระหว่าง read_buffer_size และ read_rnd_buffer_size

คุณมี read_buffer_size ที่ 64M และ read_rnd_buffer_size ที่ 4M

ฉันไม่เคยเห็นการกำหนดค่าด้วย read_buffer_size ใหญ่กว่า read_rnd_buffer_size มาก

คุณควรทำดังนี้

read_buffer_size = 16M
read_rnd_buffer_size = 64M

สิ่งเหล่านี้นำไปสู่การอ่าน I / O ไม่ใช่เขียน I / O

นี่คือสิ่งที่ต้องพิจารณา:

คุณมีตารางอื่น ๆ ที่ใช้ MyISAM หรือไม่?

คุณเรียกใช้แบบสอบถาม JOIN ที่ผสมตาราง MEMORY และตาราง MyISAM หรือไม่ ???

ทำตารางชั่วคราวใด ๆ เกิน 128M ?


ขอบคุณสำหรับเคล็ดลับ! "การจัดการไฟล์ไปยัง. frm" เป็นสิ่งที่เป็นปัญหา I / O การเขียนเป็นผลมาจากคำสั่ง "DROP TABLE / CREATE TABLE" ซ้ำ ๆ ฉันแทนที่พวกนั้นด้วย "TRUNCATE TABLE" และปัญหาหายไป
Mike Furlender

7

I / O เขียนเป็นผลมาจากคำสั่งDROP TABLE/ ซ้ำ CREATE TABLEฉันแทนที่สิ่งเหล่านั้นด้วยTRUNCATE TABLEและปัญหาหมดไป


1
ฉันจะให้ +1 แก่คุณเนื่องจากคุณได้เรียนรู้บางสิ่งจากการใช้งานของคุณเอง ฉันแค่ให้คำแนะนำแก่คุณ !!!
RolandoMySQLDBA

2

ฉันคิดว่าถึงเวลาต้องทำคณิตศาสตร์แล้ว หน่วยความจำระบบของคุณเทียบกับขนาดของตารางที่คุณพยายามทำอะไรลงไป อะไรคือขนาดของ struct (ข้อกำหนดการจัดเก็บข้อมูลของแต่ละแถว) ที่คุณจัดเก็บในตารางหน่วยความจำของคุณ?

คุณคูณจำนวน * แถวเพื่อดูว่ามีค่าเกินค่าของคุณหรือไม่?

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

ตาราง MEMORY ไม่เคยถูกแปลงเป็นดิสก์ตาราง หากตารางชั่วคราวภายในมีขนาดใหญ่เกินไปเซิร์ฟเวอร์จะแปลงเป็นพื้นที่เก็บข้อมูลบนดิสก์โดยอัตโนมัติตามที่อธิบายไว้ในหัวข้อ 7.8.4“ วิธีที่ MySQL ใช้ตารางชั่วคราวภายใน”

ความคิดอื่น ๆ : ขีด จำกัด ของคุณสำหรับ tmp_table_size และ max_heap_table_size คือ 128M แต่ key_buffer ของคุณคือ 24M แปลก นอกจากนี้บัฟเฟอร์การเข้าร่วมและการเรียงลำดับของคุณจะค่อนข้างเล็ก ฉันจะทดสอบด้วยการเพิ่ม key_buffer ของคุณเป็น 128M


key_buffer_size มีผลกับ MyISAM เท่านั้น (คีย์บัฟเฟอร์แคชหน้าดัชนีจากไฟล์ MYI)
RolandoMySQLDBA

มันเกิดขึ้นจน @Mike ถามคำถามเดียวกันที่แน่นอนใน ServerFault ( serverfault.com/questions/272337/ … ) ฉันแนะนำสิ่งเดียวกันเกี่ยวกับ tmp_table_size อย่างน้อยคุณก็พบเอกสารที่ยืนยันความเป็นไปได้นี้ ความคิดอื่นของคุณดูสมเหตุสมผลสำหรับฉัน +1 สำหรับคุณ !!!
RolandoMySQLDBA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.