- Show Global variables like '%%';

Variable_name Value Description
activate_all_roles_on_login OFF  
admin_address ""  
admin_port 33062  
admin_ssl_ca ""  
admin_ssl_capath ""  
admin_ssl_cert ""  
admin_ssl_cipher ""  
admin_ssl_crl ""  
admin_ssl_crlpath ""  
admin_ssl_key ""  
admin_tls_ciphersuites ""  
admin_tls_version TLSv1,TLSv1.1,TLSv1.2,TLSv1.3  
auto_generate_certs ON  
auto_increment_increment 1 ✔️ Auto increment 컬럼의 증가값을 결정
auto_increment_offset 1 ✔️ Auto increment 컬럼의 초기 시작값을 지정
autocommit ON  
automatic_sp_privileges ON  
avoid_temporal_upgrade OFF  
back_log 80  
basedir C:\Program Files\MySQL\MySQL Server 8.0\  
big_tables OFF  
bind_address *  
binlog_cache_size 32768  
binlog_checksum CRC32  
binlog_direct_non_transactional_updates OFF  
binlog_encryption OFF  
binlog_error_action ABORT_SERVER  
binlog_expire_logs_seconds 2592000  
binlog_format ROW ✔️ Replication Slave 서버는 이벤트를 지정된 포맷으로 읽는다.
✔️ STATEMENT(1): 명령문 기반 리플리케이션
✔️ ROW(2): 열 기반 리플리케이션
✔️ MIXED(3): 혼합 기반 리플리케이션
binlog_group_commit_sync_delay 0  
binlog_group_commit_sync_no_delay_count 0  
binlog_gtid_simple_recovery ON  
binlog_max_flush_queue_time 0  
binlog_order_commits ON  
binlog_rotate_encryption_master_key_at_startup OFF  
binlog_row_event_max_size 8192  
binlog_row_image FULL  
binlog_row_metadata MINIMAL  
binlog_row_value_options ""  
binlog_rows_query_log_events OFF  
binlog_stmt_cache_size 32768  
binlog_transaction_compression OFF  
binlog_transaction_compression_level_zstd 3  
binlog_transaction_dependency_history_size 25000  
binlog_transaction_dependency_tracking COMMIT_ORDER  
block_encryption_mode aes-128-ecb  
bulk_insert_buffer_size 8388608  
caching_sha2_password_auto_generate_rsa_keys ON  
caching_sha2_password_digest_rounds 5000  
caching_sha2_password_private_key_path private_key.pem  
caching_sha2_password_public_key_path public_key.pem  
character_set_client utf8mb4  
character_set_connection utf8mb4  
character_set_database utf8mb4  
character_set_filesystem binary  
character_set_results utf8mb4  
character_set_server utf8mb4  
character_set_system utf8mb3  
character_sets_dir C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\  
check_proxy_users OFF  
collation_connection utf8mb4_0900_ai_ci  
collation_database utf8mb4_0900_ai_ci  
collation_server utf8mb4_0900_ai_ci  
completion_type NO_CHAIN  
concurrent_insert AUTO  
connect_timeout 10 ✔️ mysqld 서버가 불량 핸드셰이크로 응답하기 전에 연결 패킷을 기다리는 시간(초)입니다.
✔️ 기본값은 10초입니다.
✔️ 클라이언트에서 MySQL 서버에 대한 연결이 'XXX'에서 손실된 경우, 시스템 오류: errno 형식의 오류가 자주 발생하는 경우 connect_timeout 값을 증가시키면 도움이 될 수 있습니다.
core_file OFF  
create_admin_listener_thread OFF  
cte_max_recursion_depth 1000  
datadir d:\MySQL\MySQL Server 8.0_25004\Data\  
default_authentication_plugin mysql_native_password  
default_collation_for_utf8mb4 utf8mb4_0900_ai_ci  
default_password_lifetime 0  
default_storage_engine InnoDB  
default_table_encryption OFF  
default_tmp_storage_engine InnoDB  
default_week_format 0  
delay_key_write ON  
delayed_insert_limit 100  
delayed_insert_timeout 300  
delayed_queue_size 1000  
disabled_storage_engines ""  
disconnect_on_expired_password ON  
div_precision_increment 4  
end_markers_in_json OFF  
enforce_gtid_consistency OFF  
eq_range_index_dive_limit 200  
event_scheduler ON  
expire_logs_days 0  
explicit_defaults_for_timestamp ON  
flush OFF  
flush_time 0  
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 DEV-DB133.log  
generated_random_password_length 20  
group_concat_max_len 1024  
group_replication_consistency EVENTUAL  
gtid_executed ""  
gtid_executed_compression_period 0  
gtid_mode OFF  
gtid_owned ""  
gtid_purged ""  
have_compress YES  
have_dynamic_loading YES  
have_geometry YES  
have_openssl YES  
have_profiling YES  
have_query_cache NO  
have_rtree_keys YES  
have_ssl YES  
have_statement_timeout YES  
have_symlink DISABLED  
histogram_generation_max_mem_size 20000000  
host_cache_size 628  
hostname DEV-DB133  
information_schema_stats_expiry 86400  
init_connect ""  
init_file ""  
init_replica ""  
init_slave ""  
innodb_adaptive_flushing ON  
innodb_adaptive_flushing_lwm 10  
innodb_adaptive_hash_index ON  
innodb_adaptive_hash_index_parts 8  
innodb_adaptive_max_sleep_delay 150000  
innodb_api_bk_commit_interval 5  
innodb_api_disable_rowlock OFF  
innodb_api_enable_binlog OFF  
innodb_api_enable_mdl OFF  
innodb_api_trx_level 0  
innodb_autoextend_increment 64  
innodb_autoinc_lock_mode 2  
innodb_buffer_pool_chunk_size 8388608  
innodb_buffer_pool_dump_at_shutdown ON  
innodb_buffer_pool_dump_now OFF  
innodb_buffer_pool_dump_pct 25  
innodb_buffer_pool_filename ib_buffer_pool  
innodb_buffer_pool_in_core_file ON  
innodb_buffer_pool_instances 1  
innodb_buffer_pool_load_abort OFF  
innodb_buffer_pool_load_at_startup ON  
innodb_buffer_pool_load_now OFF  
innodb_buffer_pool_size 8388608  
innodb_change_buffer_max_size 25  
innodb_change_buffering all  
innodb_checksum_algorithm crc32  
innodb_cmp_per_index_enabled OFF  
innodb_commit_concurrency 0  
innodb_compression_failure_threshold_pct 5  
innodb_compression_level 6  
innodb_compression_pad_pct_max 50  
innodb_concurrency_tickets 5000  
innodb_data_file_path ibdata1:12M:autoextend  
innodb_data_home_dir ""  
innodb_deadlock_detect ON  
innodb_dedicated_server OFF  
innodb_default_row_format dynamic  
innodb_directories ""  
innodb_disable_sort_file_cache OFF  
innodb_doublewrite ON  
innodb_doublewrite_batch_size 0  
innodb_doublewrite_dir ""  
innodb_doublewrite_files 2  
innodb_doublewrite_pages 4  
innodb_extend_and_initialize ON  
innodb_fast_shutdown 1  
innodb_file_per_table ON  
innodb_fill_factor 100  
innodb_flush_log_at_timeout 1  
innodb_flush_log_at_trx_commit 1  
innodb_flush_method unbuffered  
innodb_flush_neighbors 0  
innodb_flush_sync ON  
innodb_flushing_avg_loops 30  
innodb_force_load_corrupted OFF  
innodb_force_recovery 0  
innodb_fsync_threshold 0  
innodb_ft_aux_table ""  
innodb_ft_cache_size 8000000  
innodb_ft_enable_diag_print OFF  
innodb_ft_enable_stopword ON  
innodb_ft_max_token_size 84  
innodb_ft_min_token_size 3  
innodb_ft_num_word_optimize 2000  
innodb_ft_result_cache_limit 2000000000  
innodb_ft_server_stopword_table ""  
innodb_ft_sort_pll_degree 2  
innodb_ft_total_cache_size 640000000  
innodb_ft_user_stopword_table ""  
innodb_idle_flush_pct 100  
innodb_io_capacity 200  
innodb_io_capacity_max 2000  
innodb_lock_wait_timeout 50  
innodb_log_buffer_size 1048576  
innodb_log_checksums ON  
innodb_log_compressed_pages ON  
innodb_log_file_size 50331648  
innodb_log_files_in_group 2  
innodb_log_group_home_dir .\  
innodb_log_spin_cpu_abs_lwm 80  
innodb_log_spin_cpu_pct_hwm 50  
innodb_log_wait_for_flush_spin_hwm 400  
innodb_log_write_ahead_size 8192  
innodb_log_writer_threads ON  
innodb_lru_scan_depth 1024  
innodb_max_dirty_pages_pct 90.000000  
innodb_max_dirty_pages_pct_lwm 10.000000  
innodb_max_purge_lag 0  
innodb_max_purge_lag_delay 0  
innodb_max_undo_log_size 1073741824  
innodb_monitor_disable ""  
innodb_monitor_enable ""  
innodb_monitor_reset ""  
innodb_monitor_reset_all ""  
innodb_old_blocks_pct 37  
innodb_old_blocks_time 1000  
innodb_online_alter_log_max_size 134217728  
innodb_open_files 300  
innodb_optimize_fulltext_only OFF  
innodb_page_cleaners 1  
innodb_page_size 16384  
innodb_parallel_read_threads 4  
innodb_print_all_deadlocks OFF  
innodb_print_ddl_logs OFF  
innodb_purge_batch_size 300  
innodb_purge_rseg_truncate_frequency 128  
innodb_purge_threads 4  
innodb_random_read_ahead OFF  
innodb_read_ahead_threshold 56  
innodb_read_io_threads 4  
innodb_read_only OFF  
innodb_redo_log_archive_dirs ""  
innodb_redo_log_encrypt OFF  
innodb_replication_delay 0  
innodb_rollback_on_timeout OFF  
innodb_rollback_segments 128  
innodb_segment_reserve_factor 12.500000  
innodb_sort_buffer_size 1048576  
innodb_spin_wait_delay 6  
innodb_spin_wait_pause_multiplier 50  
innodb_stats_auto_recalc ON  
innodb_stats_include_delete_marked OFF  
innodb_stats_method nulls_equal  
innodb_stats_on_metadata OFF  
innodb_stats_persistent ON  
innodb_stats_persistent_sample_pages 20  
innodb_stats_transient_sample_pages 8  
innodb_status_output OFF  
innodb_status_output_locks OFF  
innodb_strict_mode ON  
innodb_sync_array_size 1  
innodb_sync_spin_loops 30  
innodb_table_locks ON  
innodb_temp_data_file_path ibtmp1:12M:autoextend  
innodb_temp_tablespaces_dir .\#innodb_temp\  
innodb_thread_concurrency 17  
innodb_thread_sleep_delay 0  
innodb_tmpdir ""  
innodb_undo_directory .\  
innodb_undo_log_encrypt OFF  
innodb_undo_log_truncate ON  
innodb_undo_tablespaces 2  
innodb_use_fdatasync OFF  
innodb_use_native_aio ON  
innodb_validate_tablespace_paths ON  
innodb_version 8.0.26  
innodb_write_io_threads 4  
interactive_timeout 28800  
internal_tmp_mem_storage_engine TempTable  
join_buffer_size 262144  
keep_files_on_create OFF  
key_buffer_size 8388608  
key_cache_age_threshold 300  
key_cache_block_size 1024  
key_cache_division_limit 100  
keyring_operations ON  
large_files_support ON  
large_page_size 0  
large_pages OFF  
lc_messages en_US  
lc_messages_dir C:\Program Files\MySQL\MySQL Server 8.0\share\  
lc_time_names en_US  
license GPL  
local_infile OFF  
lock_wait_timeout 31536000 ✔️ lock 이 걸린 테이블에 질의를 할때 락이 풀리기 까지 대기할 시간
✔️ innodb 테이블 에서도 본 시간에 따라  lock wait 후 "Lock wait timeout exceeded; try restarting transaction" 오류 발생
log_bin ON  
log_bin_basename d:\MySQL\MySQL Server 8.0_25004\Data\DEV-DB133-bin  
log_bin_index d:\MySQL\MySQL Server 8.0_25004\Data\DEV-DB133-bin.index  
log_bin_trust_function_creators OFF  
log_bin_use_v1_row_events OFF  
log_error .\DEV-DB133.err  
log_error_services log_filter_internal; log_sink_internal  
log_error_suppression_list ""  
log_error_verbosity 2  
log_output FILE  
log_queries_not_using_indexes OFF ✔️ 인덱스를 사용하지 않은 쿼리도 slow query log에 기록함
log_raw OFF  
log_replica_updates ON  
log_slave_updates ON  
log_slow_admin_statements OFF  
log_slow_extra OFF  
log_slow_replica_statements OFF  
log_slow_slave_statements OFF  
log_statements_unsafe_for_binlog ON  
log_throttle_queries_not_using_indexes 0  
log_timestamps UTC  
long_query_time 1.000000  
low_priority_updates OFF  
lower_case_file_system ON  
lower_case_table_names 1  
mandatory_roles ""  
master_info_repository TABLE  
master_verify_checksum OFF  
max_allowed_packet 4194304  
max_binlog_cache_size 18446744073709547520  
max_binlog_size 1073741824  
max_binlog_stmt_cache_size 18446744073709547520  
max_connect_errors 100 ✔️ 호스트 연속 연결 요청이 연결에 성공하지 못한 상태에서 중단되면 서버는 해당 호스트를 추가 연결에서 차단합니다. 
✔️ 이전 연결이 중단된 후 max_connect_errors 시도 횟수보다 적은 시간 내에 호스트로부터의 연결이 성공적으로 설정된 경우 호스트의 오류 수는 0으로 지워집니다.
✔️ 차단된 호스트의 차단을 해제하려면 호스트 캐시를 플러시합니다.
max_connections 500 ✔️ 최대 동시 클라이언트 연결 수입니다.
max_delayed_threads 20  
max_digest_length 1024  
max_error_count 1024  
max_execution_time 0  
max_heap_table_size 16777216  
max_insert_delayed_threads 20  
max_join_size 18446744073709551615  
max_length_for_sort_data 4096  
max_points_in_geometry 65536  
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_user_connections 0 ✔️ 지정된 MySQL 사용자 계정에 허용된 최대 동시 연결 수입니다.
✔️ 값이 0(기본값)이면 "제한 없음"을 의미합니다.
✔️ 이 변수는 서버 시작 또는 런타임에 설정할 수 있는 전역 값을 가집니다. 또한 현재 세션과 연결된 계정에 적용되는 유효한 동시 연결 제한을 나타내는 읽기 전용 세션 값도 있습니다.
✔️ 세션 값은 다음과 같이 초기화됩니다.
- 사용자 계정에 0이 아닌 MAX_USER_CONNECTION 리소스 제한이 있는 경우 세션 max_user_connections 값이 해당 제한으로 설정됩니다.
그렇지 않으면 세션 max_user_connections 값이 글로벌 값으로 설정됩니다.
- 계정 리소스 제한은 CREATE USER 또는 ALTER USER 문을 사용하여 지정됩니다.
max_write_lock_count 4294967295  
min_examined_row_limit 0  
myisam_data_pointer_size 6  
myisam_max_sort_file_size 107374182400  
myisam_mmap_size 18446744073709551615  
myisam_recover_options OFF  
myisam_repair_threads 1  
myisam_sort_buffer_size 52428800  
myisam_stats_method nulls_unequal  
myisam_use_mmap OFF  
mysql_native_password_proxy_users OFF  
mysqlx_bind_address *  
mysqlx_compression_algorithms DEFLATE_STREAM,LZ4_MESSAGE,ZSTD_STREAM  
mysqlx_connect_timeout 30  
mysqlx_deflate_default_compression_level 3  
mysqlx_deflate_max_client_compression_level 5  
mysqlx_document_id_unique_prefix 0  
mysqlx_enable_hello_notice ON  
mysqlx_idle_worker_thread_timeout 60  
mysqlx_interactive_timeout 28800  
mysqlx_lz4_default_compression_level 2  
mysqlx_lz4_max_client_compression_level 8  
mysqlx_max_allowed_packet 67108864  
mysqlx_max_connections 100  
mysqlx_min_worker_threads 2  
mysqlx_port 33060  
mysqlx_port_open_timeout 0  
mysqlx_read_timeout 30  
mysqlx_socket /tmp/mysqlx.sock  
mysqlx_ssl_ca ""  
mysqlx_ssl_capath ""  
mysqlx_ssl_cert ""  
mysqlx_ssl_cipher ""  
mysqlx_ssl_crl ""  
mysqlx_ssl_crlpath ""  
mysqlx_ssl_key ""  
mysqlx_wait_timeout 28800  
mysqlx_write_timeout 60  
mysqlx_zstd_default_compression_level 3  
mysqlx_zstd_max_client_compression_level 11  
named_pipe OFF  
named_pipe_full_access_group ""  
net_buffer_length 16384  
net_read_timeout 30  
net_retry_count 10  
net_write_timeout 60  
new OFF  
ngram_token_size 2  
offline_mode OFF  
old OFF  
old_alter_table OFF  
open_files_limit 6558  
optimizer_prune_level 1  
optimizer_search_depth 62  
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=on,hash_join=on,subquery_to_derived=off,prefer_ordering_index=on,hypergraph_optimizer=off,derived_condition_pushdown=on  
optimizer_trace enabled=off,one_line=off  
optimizer_trace_features greedy_search=on,range_optimizer=on,dynamic_range=on,repeated_subselect=on  
optimizer_trace_limit 1  
optimizer_trace_max_mem_size 1048576  
optimizer_trace_offset -1  
parser_max_mem_size 18446744073709551615  
partial_revokes OFF  
password_history 0  
password_require_current OFF  
password_reuse_interval 0  
performance_schema ON  
performance_schema_accounts_size -1  
performance_schema_digests_size 10000  
performance_schema_error_size 4946  
performance_schema_events_stages_history_long_size 10000  
performance_schema_events_stages_history_size 10  
performance_schema_events_statements_history_long_size 10000  
performance_schema_events_statements_history_size 10  
performance_schema_events_transactions_history_long_size 10000  
performance_schema_events_transactions_history_size 10  
performance_schema_events_waits_history_long_size 10000  
performance_schema_events_waits_history_size 10  
performance_schema_hosts_size -1  
performance_schema_max_cond_classes 100  
performance_schema_max_cond_instances -1  
performance_schema_max_digest_length 1024  
performance_schema_max_digest_sample_age 60  
performance_schema_max_file_classes 80  
performance_schema_max_file_handles 32768  
performance_schema_max_file_instances -1  
performance_schema_max_index_stat -1  
performance_schema_max_memory_classes 450  
performance_schema_max_metadata_locks -1  
performance_schema_max_mutex_classes 300  
performance_schema_max_mutex_instances -1  
performance_schema_max_prepared_statements_instances -1  
performance_schema_max_program_instances -1  
performance_schema_max_rwlock_classes 60  
performance_schema_max_rwlock_instances -1  
performance_schema_max_socket_classes 10  
performance_schema_max_socket_instances -1  
performance_schema_max_sql_text_length 1024  
performance_schema_max_stage_classes 175  
performance_schema_max_statement_classes 218  
performance_schema_max_statement_stack 10  
performance_schema_max_table_handles -1  
performance_schema_max_table_instances -1  
performance_schema_max_table_lock_stat -1  
performance_schema_max_thread_classes 100  
performance_schema_max_thread_instances -1  
performance_schema_session_connect_attrs_size 512  
performance_schema_setup_actors_size -1  
performance_schema_setup_objects_size -1  
performance_schema_show_processlist OFF  
performance_schema_users_size -1  
persist_only_admin_x509_subject ""  
persisted_globals_load ON  
pid_file d:\MySQL\MySQL Server 8.0_25004\Data\DEV-DB133.pid  
plugin_dir C:\Program Files\MySQL\MySQL Server 8.0\lib\plugin\  
port 25004  
preload_buffer_size 32768  
print_identified_with_as_hex OFF  
profiling OFF  
profiling_history_size 15  
protocol_compression_algorithms zlib,zstd,uncompressed  
protocol_version 10  
query_alloc_block_size 8192  
query_prealloc_size 8192  
range_alloc_block_size 4096  
range_optimizer_max_mem_size 8388608  
rbr_exec_mode STRICT  
read_buffer_size 65536  
read_only OFF  
read_rnd_buffer_size 262144  
regexp_stack_limit 8000000  
regexp_time_limit 32  
relay_log DEV-DB133-relay-bin  
relay_log_basename d:\MySQL\MySQL Server 8.0_25004\Data\DEV-DB133-relay-bin  
relay_log_index d:\MySQL\MySQL Server 8.0_25004\Data\DEV-DB133-relay-bin.index  
relay_log_info_file relay-log.info  
relay_log_info_repository TABLE  
relay_log_purge ON  
relay_log_recovery OFF  
relay_log_space_limit 0  
replica_allow_batching OFF  
replica_checkpoint_group 512  
replica_checkpoint_period 300  
replica_compressed_protocol OFF  
replica_exec_mode STRICT  
replica_load_tmpdir C:\Windows\SERVIC~1\NETWOR~1\AppData\Local\Temp  
replica_max_allowed_packet 1073741824  
replica_net_timeout 60  
replica_parallel_type DATABASE  
replica_parallel_workers 0  
replica_pending_jobs_size_max 134217728  
replica_preserve_commit_order OFF  
replica_skip_errors OFF  
replica_sql_verify_checksum ON  
replica_transaction_retries 10  
replica_type_conversions ""  
replication_optimize_for_static_plugin_config OFF  
replication_sender_observe_commit_only OFF  
report_host ""  
report_password ""  
report_port 25004  
report_user ""  
require_secure_transport OFF  
rpl_read_size 8192  
rpl_stop_replica_timeout 31536000  
rpl_stop_slave_timeout 31536000  
schema_definition_cache 256  
secondary_engine_cost_threshold 100000.000000  
secure_file_priv d:\MySQL\MySQL Server 8.0_25004\Uploads\  
select_into_buffer_size 131072  
select_into_disk_sync OFF  
select_into_disk_sync_delay 0  
server_id 1  
server_id_bits 32  
server_uuid 29f4b9a  
session_track_gtids OFF  
session_track_schema ON  
session_track_state_change OFF  
session_track_system_variables time_zone,autocommit,character_set_client,character_set_results,character_set_connection  
session_track_transaction_info OFF  
sha256_password_auto_generate_rsa_keys ON  
sha256_password_private_key_path private_key.pem  
sha256_password_proxy_users OFF  
sha256_password_public_key_path public_key.pem  
shared_memory OFF  
shared_memory_base_name MYSQL  
show_create_table_verbosity OFF  
show_old_temporals OFF  
skip_external_locking ON  
skip_name_resolve OFF  
skip_networking OFF  
skip_replica_start OFF  
skip_show_database OFF  
skip_slave_start OFF  
slave_allow_batching OFF  
slave_checkpoint_group 512  
slave_checkpoint_period 300  
slave_compressed_protocol OFF  
slave_exec_mode STRICT  
slave_load_tmpdir C:\Windows\SERVIC~1\NETWOR~1\AppData\Local\Temp  
slave_max_allowed_packet 1073741824  
slave_net_timeout 60  
slave_parallel_type DATABASE  
slave_parallel_workers 0  
slave_pending_jobs_size_max 134217728  
slave_preserve_commit_order OFF  
slave_rows_search_algorithms INDEX_SCAN,HASH_SCAN  
slave_skip_errors OFF  
slave_sql_verify_checksum ON  
slave_transaction_retries 10  
slave_type_conversions ""  
slow_launch_time 2  
slow_query_log ON  
slow_query_log_file DEV-DB133-slow.log  
socket MySQL  
sort_buffer_size 262144  
source_verify_checksum OFF  
sql_auto_is_null OFF  
sql_big_selects ON  
sql_buffer_result OFF  
sql_log_off OFF  
sql_mode STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION  
sql_notes ON  
sql_quote_show_create ON  
sql_replica_skip_counter 0  
sql_require_primary_key OFF  
sql_safe_updates OFF  
sql_select_limit 18446744073709551615  
sql_slave_skip_counter 0  
sql_warnings OFF  
ssl_ca ca.pem  
ssl_capath ""  
ssl_cert server-cert.pem  
ssl_cipher ""  
ssl_crl ""  
ssl_crlpath ""  
ssl_fips_mode OFF  
ssl_key server-key.pem  
stored_program_cache 256  
stored_program_definition_cache 256  
super_read_only OFF  
sync_binlog 1  
sync_master_info 10000  
sync_relay_log 10000  
sync_relay_log_info 10000  
sync_source_info 10000  
system_time_zone ""  
table_definition_cache 1400  
table_encryption_privilege_check OFF  
table_open_cache 2000  
table_open_cache_instances 16  
tablespace_definition_cache 256  
temptable_max_mmap 1073741824  
temptable_max_ram 1073741824  
temptable_use_mmap ON  
terminology_use_previous NONE  
thread_cache_size 10  
thread_handling one-thread-per-connection  
thread_stack 286720  
time_zone SYSTEM  
tls_ciphersuites ""  
tls_version TLSv1,TLSv1.1,TLSv1.2,TLSv1.3  
tmp_table_size 30408704  
tmpdir C:\Windows\SERVIC~1\NETWOR~1\AppData\Local\Temp  
transaction_alloc_block_size 8192  
transaction_isolation REPEATABLE-READ  
transaction_prealloc_size 4096  
transaction_read_only OFF  
transaction_write_set_extraction XXHASH64  
unique_checks ON  
updatable_views_with_limit YES  
version 8.0.26  
version_comment MySQL Community Server - GPL  
version_compile_machine x86_64  
version_compile_os Win64  
version_compile_zlib 1.2.11  
wait_timeout 28800 ✔️ 접속한 후 쿼리가 들어올 때까지 대기하는 시간.
✔️ 연결 후 지정된 사간동안 쿼리가 수신되지 않으면 해당 연결을 강제로 종료함
✔️ 접속이 많은 데이터베이스 시스템 에서는 이 값을 낮춰 Sleep 상태의 클라이언트들을 접속 해제하여 성능 향상을 볼 수 있다.
✔️ wait_timeout 에 걸려 접속이 해제되면 aborted_client 수가 상승하게 됨
✔️ node.js 처럼 Connection Pool을 사용하는 시스템은 해당 값을 늘리는게 연결이 몰릴때 이점이 있음
✔️ 단위: 초, default=8시간
windowing_use_high_precision ON  

 

  • flush status;   -- 상태정보 초기화 쿼리
Variable Name Value(Example) Description
Aborted_clients 0  클라이언트 프로그램이 비 정상적으로 종료된 수
max_allowed_packet을 초과하는 쿼리는 비정상 적으로 중단된다. (default 4194304 byte)
MySQL 연결을 닫지 않은 상태에서 Wait_timeout 설정에 의해 클라이언트와의 연결을 강제 종료한 경우 증가
≫ 
Aborted_connects 0 MySQL 서버에 접속이 실패된 수
≫ 값이 지속적으로 증가하면 해킹 시도를 의심해야 함
≫ 실패 사유 : 계정정보 오류, 유효하지 않은 DB명 입력, 컨넥션 부족
≫ 서버 재시작 시 초기화됨

Acl_cache_items_count 0  
Binlog_cache_disk_use 0  
Binlog_cache_use 0  
Binlog_stmt_cache_disk_use 0  
Binlog_stmt_cache_use 0  
Bytes_received 65418  
Bytes_sent 1177448  
Caching_sha2_password_rsa_public_key "-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----"  
Com_admin_commands 11 Com:서버가 실행된 후 각 명령어가 실행된 횟수
show status 명령어 실행시 마다 3~4씩 증가
Com_assign_to_keycache 0  
Com_alter_db 0 alter db명령어가 실행된 횟수
Com_alter_event 0  
Com_alter_function 0  
Com_alter_instance 0  
Com_alter_procedure 0  
Com_alter_resource_group 0  
Com_alter_server 0  
Com_alter_table 0  
Com_alter_tablespace 0  
Com_alter_user 0  
Com_alter_user_default_role 0  
Com_analyze 0  
Com_begin 0  
Com_binlog 0  
Com_call_procedure 0  
Com_change_db 2  
Com_change_master 0  
Com_change_repl_filter 0  
Com_change_replication_source 0  
Com_check 0  
Com_checksum 0  
Com_clone 0  
Com_commit 0  
Com_create_db 1  create database 실행 횟수
 서버 재시작 시 초기화됨
Com_create_event 0 ≫ create event 실행 횟수
Com_create_function 0  
Com_create_index 0  
Com_create_procedure 0  
Com_create_role 0  
Com_create_server 0  
Com_create_table 34  create table 실행 횟수
 서버 재시작 시 초기화됨
Com_create_resource_group 0  
Com_create_trigger 0  
Com_create_udf 0  
Com_create_user 0  
Com_create_view 0  
Com_create_spatial_reference_system 0  
Com_dealloc_sql 0  
Com_delete 0  
Com_delete_multi 0  
Com_do 0  
Com_drop_db 0  
Com_drop_event 0  
Com_drop_function 0  
Com_drop_index 0  
Com_drop_procedure 0  
Com_drop_resource_group 0  
Com_drop_role 0  
Com_drop_server 0  
Com_drop_spatial_reference_system 0  
Com_drop_table 0  
Com_drop_trigger 0  
Com_drop_user 0  
Com_drop_view 0  
Com_empty_query 0  
Com_execute_sql 0  
Com_explain_other 0  
Com_flush 1  flush status; 등의 명령을 수행한 횟수
Com_get_diagnostics 0  
Com_grant 0  
Com_grant_roles 0  
Com_ha_close 0  
Com_ha_open 0  
Com_ha_read 0  
Com_help 0  
Com_import 0  
Com_insert 0  
Com_insert_select 0  
Com_install_component 0  
Com_install_plugin 0  
Com_kill 0  
Com_load 0  
Com_lock_instance 0  
Com_lock_tables 0  
Com_optimize 0  
Com_preload_keys 0  
Com_prepare_sql 0  
Com_purge 0  
Com_purge_before_date 0  
Com_release_savepoint 0  
Com_rename_table 0  
Com_rename_user 0  
Com_repair 0  
Com_replace 0  
Com_replace_select 0  
Com_reset 0  
Com_resignal 0  
Com_restart 0  
Com_revoke 0  
Com_revoke_all 0  
Com_revoke_roles 0  
Com_rollback 0  
Com_rollback_to_savepoint 0  
Com_savepoint 0  
Com_select 89  
Com_set_option 385  
Com_set_password 0  
Com_set_resource_group 0  
Com_set_role 0  
Com_signal 0  
Com_show_binlog_events 0  
Com_show_binlogs 0  
Com_show_charsets 0  
Com_show_collations 0  
Com_show_create_db 0  
Com_show_create_event 0  
Com_show_create_func 22  
Com_show_create_proc 26  
Com_show_create_table 79  
Com_show_create_trigger 2  
Com_show_databases 0  
Com_show_engine_logs 0  
Com_show_engine_mutex 0  
Com_show_engine_status 0  
Com_show_events 0  
Com_show_errors 0  
Com_show_fields 0  
Com_show_function_code 0  
Com_show_function_status 0  
Com_show_grants 0  
Com_show_keys 0  
Com_show_master_status 0  
Com_show_open_tables 0  
Com_show_plugins 0  
Com_show_privileges 0  
Com_show_procedure_code 0  
Com_show_procedure_status 0  
Com_show_processlist 0  
Com_show_profile 0  
Com_show_profiles 0  
Com_show_relaylog_events 0  
Com_show_replicas 0  
Com_show_slave_hosts 0  
Com_show_replica_status 0  
Com_show_slave_status 0  
Com_show_status 2  
Com_show_storage_engines 0  
Com_show_table_status 0  
Com_show_tables 0  
Com_show_triggers 0  
Com_show_variables 2  
Com_show_warnings 413  
Com_show_create_user 0  
Com_shutdown 0  
Com_replica_start 0  
Com_slave_start 0  
Com_replica_stop 0  
Com_slave_stop 0  
Com_group_replication_start 0  
Com_group_replication_stop 0  
Com_stmt_execute 0  
Com_stmt_close 0  
Com_stmt_fetch 0  
Com_stmt_prepare 0  
Com_stmt_reset 0  
Com_stmt_send_long_data 0  
Com_truncate 0  
Com_uninstall_component 0  
Com_uninstall_plugin 0  
Com_unlock_instance 0  
Com_unlock_tables 0  
Com_update 0  
Com_update_multi 0  
Com_xa_commit 0  
Com_xa_end 0  
Com_xa_prepare 0  
Com_xa_recover 0  
Com_xa_rollback 0  
Com_xa_start 0  
Com_stmt_reprepare 0  
Connection_errors_accept 0 수신 포트에서 수락 호출 중에 발생한 오류 수입니다.
 서버 재시작 시 초기화됨
Connection_errors_internal 0 새 스레드를 시작하지 못했거나 메모리 부족 상태와 같은 서버 내부 오류로 인해 거부된 연결 수입니다.
 서버 재시작 시 초기화됨
Connection_errors_max_connections 0 서버 max_connections 제한에 도달했기 때문에 거부된 연결 수입니다.
 서버 재시작 시 초기화됨
Connection_errors_peer_address 0  클라이언트 IP 주소를 연결하는 동안 발생한 오류 수입니다.
 서버 재시작 시 초기화됨
Connection_errors_select 0 수신 포트에서 select() 또는 pool()를 호출하는 동안 발생한 오류 수입니다.
이 작업이 실패했다고 해서 클라이언트 연결이 반드시 거부된 것은 아닙니다.
Connection_errors_tcpwrap 0  libwrap 라이브러리에서 거부된 연결 수입니다.
Connections 9 서버 가동 후 연결 시도된 횟수
실제 접속이 되지 않고 시도만 해도 값 증가
Access denied 이 되어도 수치 증가
Created_tmp_disk_tables 4 ≫ 임시테이블을 디스크에 생성한 횟수
이 수치가 높으면 쿼리 처리를 위해 디스크를 많이 사용하고 있다는 뜻(성능 하락)
Created_tmp_files 4 ≫ 임시파일 생성 횟수
Created_tmp_tables 81 ≫ 임시 테이블 생성 횟수
Current_tls_ca ca.pem  
Current_tls_capath ""  
Current_tls_cert server-cert.pem  
Current_tls_cipher ""  
Current_tls_ciphersuites ""  
Current_tls_crl ""  
Current_tls_crlpath ""  
Current_tls_key server-key.pem  
Current_tls_version TLSv1,TLSv1.1,TLSv1.2,TLSv1.3  
Delayed_errors 0  
Delayed_insert_threads 0  사용중인 insert handler threads가 지연되고 있는 수
Delayed_writes 0  INSERT DELAYED로 쓰여진 rows수
Error_log_buffered_bytes 147912 ≫ performance_schema.error_log 의 Byte수
 MySQL 8.0.22에서 추가
Error_log_buffered_events 1032  performance_schema.error_log 의 Row 수
Error_log_expired_events 0  
Error_log_latest_write 1675386451298063  performance_schema.error_log 테이블에 마지막으로 기록한 시간
Flush_commands 3  
Handler_commit 2369  
Handler_delete 0  
Handler_discover 0  
Handler_external_lock 15409  
Handler_mrr_init 0  
Handler_prepare 0  
Handler_read_first 114  
Handler_read_key 11478  
Handler_read_last 0  
Handler_read_next 17529  
Handler_read_prev 0  
Handler_read_rnd 3991  
Handler_read_rnd_next 9840  
Handler_rollback 0  
Handler_savepoint 0  
Handler_savepoint_rollback 0  
Handler_update 318  
Handler_write 6208  
Innodb_buffer_pool_dump_status Dumping of buffer pool not started  
Innodb_buffer_pool_load_status Buffer pool(s) load completed at 230203 10:07:31  
Innodb_buffer_pool_resize_status ""  
Innodb_buffer_pool_pages_data 2267  
Innodb_buffer_pool_bytes_data 37142528  
Innodb_buffer_pool_pages_dirty 0  
Innodb_buffer_pool_bytes_dirty 0  
Innodb_buffer_pool_pages_flushed 217  
Innodb_buffer_pool_pages_free 259829  
Innodb_buffer_pool_pages_misc 48  
Innodb_buffer_pool_pages_total 262144  
Innodb_buffer_pool_read_ahead_rnd 0  
Innodb_buffer_pool_read_ahead 0  
Innodb_buffer_pool_read_ahead_evicted 0  
Innodb_buffer_pool_read_requests 63821  
Innodb_buffer_pool_reads 2123  
Innodb_buffer_pool_wait_free 0  
Innodb_buffer_pool_write_requests 1958  
Innodb_data_fsyncs 125  
Innodb_data_pending_fsyncs 0  
Innodb_data_pending_reads 0  
Innodb_data_pending_writes 0  
Innodb_data_read 34853888  
Innodb_data_reads 2149  
Innodb_data_writes 372  
Innodb_data_written 3638272  
Innodb_dblwr_pages_written 72  
Innodb_dblwr_writes 29  
Innodb_log_waits 0  
Innodb_log_write_requests 812  
Innodb_log_writes 77  
Innodb_os_log_fsyncs 59  
Innodb_os_log_pending_fsyncs 0  
Innodb_os_log_pending_writes 0  
Innodb_os_log_written 64000  
Innodb_page_size 16384  
Innodb_pages_created 146  
Innodb_pages_read 2122  
Innodb_pages_written 217  
Innodb_redo_log_enabled ON  
Innodb_row_lock_current_waits 0  
Innodb_row_lock_time 0  
Innodb_row_lock_time_avg 0  
Innodb_row_lock_time_max 0  
Innodb_row_lock_waits 0  
Innodb_rows_deleted 0  
Innodb_rows_inserted 0  
Innodb_rows_read 0  
Innodb_rows_updated 0  
Innodb_system_rows_deleted 0  
Innodb_system_rows_inserted 38  
Innodb_system_rows_read 22621  
Innodb_system_rows_updated 318  
Innodb_sampled_pages_read 0  
Innodb_sampled_pages_skipped 0  
Innodb_num_open_files 19  
Innodb_truncated_status_writes 0  
Innodb_undo_tablespaces_total 2  
Innodb_undo_tablespaces_implicit 2  
Innodb_undo_tablespaces_explicit 0  
Innodb_undo_tablespaces_active 2  
Key_blocks_not_flushed 0  
Key_blocks_unused 6698  
Key_blocks_used 0  
Key_read_requests 0  
Key_reads 0  
Key_write_requests 0  
Key_writes 0  
Locked_connects 0  
Max_execution_time_exceeded 0  
Max_execution_time_set 0  
Max_execution_time_set_failed 0  
Max_used_connections 1 최대로 동시에 접속한 수
Max_used_connections_time 2023-02-03 13:58:30 최대로 동시에 접속한 시각
Mysqlx_aborted_clients 0  
Mysqlx_address ::  
Mysqlx_bytes_received 0  
Mysqlx_bytes_received_compressed_payload 0  
Mysqlx_bytes_received_uncompressed_frame 0  
Mysqlx_bytes_sent 0  
Mysqlx_bytes_sent_compressed_payload 0  
Mysqlx_bytes_sent_uncompressed_frame 0  
Mysqlx_compression_algorithm ""  
Mysqlx_compression_level ""  
Mysqlx_connection_accept_errors 0  
Mysqlx_connection_errors 0  
Mysqlx_connections_accepted 0  
Mysqlx_connections_closed 0  
Mysqlx_connections_rejected 0  
Mysqlx_crud_create_view 0  
Mysqlx_crud_delete 0  
Mysqlx_crud_drop_view 0  
Mysqlx_crud_find 0  
Mysqlx_crud_insert 0  
Mysqlx_crud_modify_view 0  
Mysqlx_crud_update 0  
Mysqlx_cursor_close 0  
Mysqlx_cursor_fetch 0  
Mysqlx_cursor_open 0  
Mysqlx_errors_sent 0  
Mysqlx_errors_unknown_message_type 0  
Mysqlx_expect_close 0  
Mysqlx_expect_open 0  
Mysqlx_init_error 0  
Mysqlx_messages_sent 0  
Mysqlx_notice_global_sent 0  
Mysqlx_notice_other_sent 0  
Mysqlx_notice_warning_sent 0  
Mysqlx_notified_by_group_replication 0  
Mysqlx_port 33060  
Mysqlx_prep_deallocate 0  
Mysqlx_prep_execute 0  
Mysqlx_prep_prepare 0  
Mysqlx_rows_sent 0  
Mysqlx_sessions 0  
Mysqlx_sessions_accepted 0  
Mysqlx_sessions_closed 0  
Mysqlx_sessions_fatal_error 0  
Mysqlx_sessions_killed 0  
Mysqlx_sessions_rejected 0  
Mysqlx_socket UNDEFINED  
Mysqlx_ssl_accepts 0  
Mysqlx_ssl_active    
Mysqlx_ssl_cipher    
Mysqlx_ssl_cipher_list    
Mysqlx_ssl_ctx_verify_depth 18446744073709551615  
Mysqlx_ssl_ctx_verify_mode 5  
Mysqlx_ssl_finished_accepts 0  
Mysqlx_ssl_server_not_after Sep 25 01:18:46 2031 GMT  
Mysqlx_ssl_server_not_before Sep 27 01:18:46 2021 GMT  
Mysqlx_ssl_verify_depth    
Mysqlx_ssl_verify_mode    
Mysqlx_ssl_version    
Mysqlx_stmt_create_collection 0  
Mysqlx_stmt_create_collection_index 0  
Mysqlx_stmt_disable_notices 0  
Mysqlx_stmt_drop_collection 0  
Mysqlx_stmt_drop_collection_index 0  
Mysqlx_stmt_enable_notices 0  
Mysqlx_stmt_ensure_collection 0  
Mysqlx_stmt_execute_mysqlx 0  
Mysqlx_stmt_execute_sql 0  
Mysqlx_stmt_execute_xplugin 0  
Mysqlx_stmt_get_collection_options 0  
Mysqlx_stmt_kill_client 0  
Mysqlx_stmt_list_clients 0  
Mysqlx_stmt_list_notices 0  
Mysqlx_stmt_list_objects 0  
Mysqlx_stmt_modify_collection_options 0  
Mysqlx_stmt_ping 0  
Mysqlx_worker_threads 2  
Mysqlx_worker_threads_active 0  
Not_flushed_delayed_rows 0  
Ongoing_anonymous_transaction_count 0  
Open_files 3  
Open_streams 0  
Open_table_definitions 209  
Open_tables 164  
Opened_files 3  
Opened_table_definitions 246  
Opened_tables 299  
Performance_schema_accounts_lost 0  
Performance_schema_cond_classes_lost 0  
Performance_schema_cond_instances_lost 0  
Performance_schema_digest_lost 0  
Performance_schema_file_classes_lost 0  
Performance_schema_file_handles_lost 0  
Performance_schema_file_instances_lost 0  
Performance_schema_hosts_lost 0  
Performance_schema_index_stat_lost 0  
Performance_schema_locker_lost 0  
Performance_schema_memory_classes_lost 0  
Performance_schema_metadata_lock_lost 0  
Performance_schema_mutex_classes_lost 0  
Performance_schema_mutex_instances_lost 0  
Performance_schema_nested_statement_lost 0  
Performance_schema_prepared_statements_lost 0  
Performance_schema_program_lost 0  
Performance_schema_rwlock_classes_lost 0  
Performance_schema_rwlock_instances_lost 0  
Performance_schema_session_connect_attrs_longest_seen 131  
Performance_schema_session_connect_attrs_lost 0  
Performance_schema_socket_classes_lost 0  
Performance_schema_socket_instances_lost 0  
Performance_schema_stage_classes_lost 0  
Performance_schema_statement_classes_lost 0  
Performance_schema_table_handles_lost 0  
Performance_schema_table_instances_lost 0  
Performance_schema_table_lock_stat_lost 0  
Performance_schema_thread_classes_lost 0  
Performance_schema_thread_instances_lost 0  
Performance_schema_users_lost 0  
Prepared_stmt_count 0  
Queries 1030  
Questions 1018  
Replica_open_temp_tables 0  
Rsa_public_key "-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----"  
Secondary_engine_execution_count 0  
Select_full_join 18  
Select_full_range_join 0  
Select_range 0  
Select_range_check 0  
Select_scan 84  
Slave_open_temp_tables 0  
Slow_launch_threads 0  
Slow_queries 0  
Sort_merge_passes 0  
Sort_range 0  
Sort_rows 4003  
Sort_scan 24  
Ssl_accept_renegotiates 0  
Ssl_accepts 2  
Ssl_callback_cache_hits 0  
Ssl_cipher TLS_AES_256_GCM_SHA384  
Ssl_cipher_list TLS_AES_256_GCM_SHA384  
Ssl_client_connects 0  
Ssl_connect_renegotiates 0  
Ssl_ctx_verify_depth 4294967295  
Ssl_ctx_verify_mode 5  
Ssl_default_timeout 7200  
Ssl_finished_accepts 2  
Ssl_finished_connects 0  
Ssl_server_not_after Sep 25 01:18:46 2031 GMT  
Ssl_server_not_before Sep 27 01:18:46 2021 GMT  
Ssl_session_cache_hits 0  
Ssl_session_cache_misses 0  
Ssl_session_cache_mode SERVER  
Ssl_session_cache_overflows 0  
Ssl_session_cache_size 128  
Ssl_session_cache_timeouts 0  
Ssl_sessions_reused 0  
Ssl_used_session_cache_entries 0  
Ssl_verify_depth 4294967295  
Ssl_verify_mode 5  
Ssl_version TLSv1.3  
Table_locks_immediate 4 즉식 획득한 테이블 락 횟수
Table_locks_waited 0 테이블 락을 즉시 획득하지 못하고 대기한 횟수
Table_open_cache_hits 7686  
Table_open_cache_misses 299  
Table_open_cache_overflows 54  
Tc_log_max_pages_used 0  
Tc_log_page_size 0  
Tc_log_page_waits 0  
Threads_cached 0 Thread Cache의 Thread 수
Threads_connected 1 현재 연결된 Thread 수
Threads_created 1 접속을 위해 생성된 Thread 수
Threads_running 2 Sleeping 되어 있지 않은 Thread 수
Uptime 13895 MySQL이 가동중인 시간
Uptime_since_flush_status 13895  

MySQL / Mariadb 간 버전별 information_schema DB의 테이블 정보 비교 표 입니다.

MariaDB 10.1.48 MySQL 8.0.30 MySQL 5.7.37 Description
  ADMINISTRABLE_ROLE_AUTHORIZATIONS    
ALL_PLUGINS     플러그인 설치여부 및 버전 정보
APPLICABLE_ROLES APPLICABLE_ROLES    
CHANGED_PAGE_BITMAPS      
CHARACTER_SETS CHARACTER_SETS CHARACTER_SETS 지원하는 캐릭터셋 목록
  CHECK_CONSTRAINTS    
CLIENT_STATISTICS      
COLLATIONS COLLATIONS COLLATIONS 지원하는 Collations 목록
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_CHARACTER_SET_APPLICABILITY 캐릭터셋 과 Collation 맵핑
COLUMN_PRIVILEGES COLUMN_PRIVILEGES COLUMN_PRIVILEGES  
  COLUMN_STATISTICS    
COLUMNS COLUMNS COLUMNS DB별 컬럼 목록(정보)
  COLUMNS_EXTENSIONS    
ENABLED_ROLES ENABLED_ROLES    
ENGINES ENGINES ENGINES  
EVENTS EVENTS EVENTS  
FILES FILES FILES  
GEOMETRY_COLUMNS      
GLOBAL_STATUS   GLOBAL_STATUS  
GLOBAL_VARIABLES   GLOBAL_VARIABLES  
INDEX_STATISTICS      
INNODB_BUFFER_PAGE INNODB_BUFFER_PAGE INNODB_BUFFER_PAGE  
INNODB_BUFFER_PAGE_LRU INNODB_BUFFER_PAGE_LRU INNODB_BUFFER_PAGE_LRU  
INNODB_BUFFER_POOL_STATS INNODB_BUFFER_POOL_STATS INNODB_BUFFER_POOL_STATS  
INNODB_CHANGED_PAGES      
  INNODB_CACHED_INDEXES    
INNODB_CMP INNODB_CMP INNODB_CMP  
INNODB_CMPMEM   INNODB_CMPMEM  
INNODB_CMPMEM_RESET   INNODB_CMPMEM_RESET  
INNODB_CMP_PER_INDEX INNODB_CMP_PER_INDEX INNODB_CMP_PER_INDEX  
INNODB_CMP_PER_INDEX_RESET INNODB_CMP_PER_INDEX_RESET INNODB_CMP_PER_INDEX_RESET  
INNODB_CMP_RESET INNODB_CMP_RESET INNODB_CMP_RESET  
  INNODB_CMPMEM    
  INNODB_CMPMEM_RESET    
  INNODB_COLUMNS    
  INNODB_DATAFILES    
  INNODB_FIELDS    
  INNODB_FOREIGN    
  INNODB_FOREIGN_COLS    
INNODB_FT_BEING_DELETED INNODB_FT_BEING_DELETED INNODB_FT_BEING_DELETED  
INNODB_FT_CONFIG INNODB_FT_CONFIG INNODB_FT_CONFIG  
INNODB_FT_DEFAULT_STOPWORD INNODB_FT_DEFAULT_STOPWORD INNODB_FT_DEFAULT_STOPWORD  
INNODB_FT_DELETED INNODB_FT_DELETED INNODB_FT_DELETED  
INNODB_FT_INDEX_CACHE INNODB_FT_INDEX_CACHE INNODB_FT_INDEX_CACHE  
INNODB_FT_INDEX_TABLE INNODB_FT_INDEX_TABLE INNODB_FT_INDEX_TABLE  
  INNODB_INDEXES    
INNODB_LOCKS   INNODB_LOCKS  
INNODB_LOCK_WAITS   INNODB_LOCK_WAITS  
INNODB_METRICS INNODB_METRICS INNODB_METRICS  
  INNODB_SESSION_TEMP_TABLESPACES    
  INNODB_TABLES    
  INNODB_TABLESPACES    
  INNODB_TABLESPACES_BRIEF    
  INNODB_TABLESTATS    
INNODB_MUTEXES      
INNODB_SYS_COLUMNS   INNODB_SYS_COLUMNS  
INNODB_SYS_DATAFILES   INNODB_SYS_DATAFILES  
INNODB_SYS_FIELDS   INNODB_SYS_FIELDS  
INNODB_SYS_FOREIGN   INNODB_SYS_FOREIGN  
INNODB_SYS_FOREIGN_COLS   INNODB_SYS_FOREIGN_COLS  
INNODB_SYS_INDEXES   INNODB_SYS_INDEXES  
INNODB_SYS_SEMAPHORE_WAITS      
INNODB_SYS_TABLES   INNODB_SYS_TABLES  
INNODB_SYS_TABLESPACES   INNODB_SYS_TABLESPACES  
INNODB_SYS_TABLESTATS   INNODB_SYS_TABLESTATS  
INNODB_TABLESPACES_ENCRYPTION      
INNODB_TABLESPACES_SCRUBBING      
    INNODB_SYS_VIRTUAL  
  INNODB_TEMP_TABLE_INFO INNODB_TEMP_TABLE_INFO  
INNODB_TRX INNODB_TRX INNODB_TRX  
KEY_CACHES      
  INNODB_VIRTUAL    
KEY_COLUMN_USAGE KEY_COLUMN_USAGE KEY_COLUMN_USAGE  
  KEYWORDS    
  OPTIMIZER_TRACE OPTIMIZER_TRACE  
PARAMETERS PARAMETERS PARAMETERS  
PARTITIONS PARTITIONS PARTITIONS  
PLUGINS PLUGINS PLUGINS  
PROCESSLIST PROCESSLIST PROCESSLIST  
PROFILING PROFILING PROFILING  
REFERENTIAL_CONSTRAINTS REFERENTIAL_CONSTRAINTS REFERENTIAL_CONSTRAINTS  
  RESOURCE_GROUPS    
  ROLE_COLUMN_GRANTS    
  ROLE_ROUTINE_GRANTS    
  ROLE_TABLE_GRANTS    
ROUTINES ROUTINES ROUTINES  
SCHEMATA SCHEMATA SCHEMATA  
SCHEMA_PRIVILEGES SCHEMA_PRIVILEGES SCHEMA_PRIVILEGES  
SESSION_STATUS   SESSION_STATUS  
SESSION_VARIABLES   SESSION_VARIABLES  
SPATIAL_REF_SYS      
  SCHEMATA_EXTENSIONS    
  ST_GEOMETRY_COLUMNS    
  ST_SPATIAL_REFERENCE_SYSTEMS    
  ST_UNITS_OF_MEASURE    
STATISTICS STATISTICS STATISTICS  
SYSTEM_VARIABLES      
TABLES TABLES TABLES  
  TABLES_EXTENSIONS    
TABLESPACES TABLESPACES TABLESPACES  
TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_CONSTRAINTS  
  TABLE_CONSTRAINTS_EXTENSIONS    
TABLE_PRIVILEGES TABLE_PRIVILEGES TABLE_PRIVILEGES  
  TABLESPACES_EXTENSIONS    
TABLE_STATISTICS      
TRIGGERS TRIGGERS TRIGGERS  
  USER_ATTRIBUTES    
USER_PRIVILEGES USER_PRIVILEGES USER_PRIVILEGES  
USER_STATISTICS      
  VIEW_ROUTINE_USAGE    
  VIEW_TABLE_USAGE    
VIEWS VIEWS VIEWS  
XTRADB_INTERNAL_HASH_TABLES      
XTRADB_READ_VIEW      
XTRADB_RSEG      

MySQL에서 performance_schema 를 활성화 한 이후 설정 가능한 환경변수 목록 입니다.

변경할 필요가 많지 않습니다.

Variable_name Value Variable_name Value Variable_name Value Description
performance_schema ON performance_schema ON performance_schema ON 성능 모니터링 사용 여부
performance_schema_accounts_size 100 performance_schema_accounts_size -1 performance_schema_accounts_size -1 performance_schema.accounts 테이블 의 최대 행 수
performance_schema_digests_size 5000 performance_schema_digests_size 10000 performance_schema_digests_size 10000 events_statements_summary_by_digest 테이블에 저장할 수 있는 최대 행 수입니다
    performance_schema_error_size 5153      
performance_schema_events_stages_history_long_size 1000 performance_schema_events_stages_history_long_size 10000 performance_schema_events_stages_history_long_size 10000 events_stages_history_long 테이블 의 행 수입니다 .
performance_schema_events_stages_history_size 10 performance_schema_events_stages_history_size 10 performance_schema_events_stages_history_size 10 events_stages_history 테이블의 스레드당 행 수입니다 .
performance_schema_events_statements_history_long_size 1000 performance_schema_events_statements_history_long_size 10000 performance_schema_events_statements_history_long_size 10000 events_statements_history_long 테이블 의 행 수입니다 .
performance_schema_events_statements_history_size 10 performance_schema_events_statements_history_size 10 performance_schema_events_statements_history_size 10 events_statements_history 테이블의 스레드당 행 수입니다 .
    performance_schema_events_transactions_history_long_size 10000 performance_schema_events_transactions_history_long_size 10000 events_transactions_history_long 테이블 의 행 수입니다
    performance_schema_events_transactions_history_size 10 performance_schema_events_transactions_history_size 10 events_transactions_history 의 스레드당 행 수입니다 .
performance_schema_events_waits_history_long_size 1000 performance_schema_events_waits_history_long_size 10000 performance_schema_events_waits_history_long_size 10000 events_waits_history_long 테이블에 포함된 행 수입니다 .
performance_schema_events_waits_history_size 10 performance_schema_events_waits_history_size 10 performance_schema_events_waits_history_size 10 events_waits_history 테이블에 포함된 스레드당 행 수입니다 .
performance_schema_hosts_size 100 performance_schema_hosts_size -1 performance_schema_hosts_size -1 호스트 테이블에 저장된 행 수입니다 . 0으로 설정하면 호스트 테이블에 대한 연결 통계가 유지되지 않습니다.
performance_schema_max_cond_classes 80 performance_schema_max_cond_classes 150 performance_schema_max_cond_classes 80 최대 조건 계측기 수를 지정합니다.
performance_schema_max_cond_instances 1360 performance_schema_max_cond_instances -1 performance_schema_max_cond_instances -1 계측된 조건 개체의 최대 수를 지정합니다.
performance_schema_max_digest_length 1024 performance_schema_max_digest_length 1024 performance_schema_max_digest_length 1024 performance_schema 테이블에 저장 될 때 요약 텍스트에 고려되는 최대 길이입니다.
    performance_schema_max_digest_sample_age 60      
performance_schema_max_file_classes 50 performance_schema_max_file_classes 80 performance_schema_max_file_classes 80 최대 파일 악기 수를 지정합니다.
performance_schema_max_file_handles 32768 performance_schema_max_file_handles 32768 performance_schema_max_file_handles 32768 열린 최대 파일 개체 수를 지정합니다. 항상 open_files_limit 보다 높아야 합니다.
performance_schema_max_file_instances 2500 performance_schema_max_file_instances -1 performance_schema_max_file_instances -1 계측된 파일 개체의 최대 수를 지정합니다.
    performance_schema_max_index_stat -1 performance_schema_max_index_stat -1 계측된 테이블에 대한 최대 인덱스 통계 수입니다.
    performance_schema_max_memory_classes 450 performance_schema_max_memory_classes 320 메모리 풀 기기의 최대 수입니다.
    performance_schema_max_metadata_locks -1 performance_schema_max_metadata_locks -1 성능 스키마 메타데이터 잠금 의 최대 수입니다.
performance_schema_max_mutex_classes 200 performance_schema_max_mutex_classes 350 performance_schema_max_mutex_classes 210 최대 뮤텍스 기기 수를 지정합니다.
performance_schema_max_mutex_instances 5648 performance_schema_max_mutex_instances -1 performance_schema_max_mutex_instances -1 계측된 뮤텍스 인스턴스의 최대 수를 지정합니다.
    performance_schema_max_prepared_statements_instances -1 performance_schema_max_prepared_statements_instances -1 계측된 준비 명령문의 최대 수입니다.
    performance_schema_max_program_instances -1 performance_schema_max_program_instances -1 계측된 프로그램의 최대 수입니다.
performance_schema_max_rwlock_classes 40 performance_schema_max_rwlock_classes 60 performance_schema_max_rwlock_classes 50 최대 rwlock 기기 수를 지정합니다.
performance_schema_max_rwlock_instances 3073 performance_schema_max_rwlock_instances -1 performance_schema_max_rwlock_instances -1 계측된 rwlock 개체의 최대 수를 지정합니다.
performance_schema_max_socket_classes 10 performance_schema_max_socket_classes 10 performance_schema_max_socket_classes 10 최대 소켓 계측기 수를 지정합니다.
performance_schema_max_socket_instances 230 performance_schema_max_socket_instances -1 performance_schema_max_socket_instances -1 계측된 소켓 개체의 최대 수를 지정합니다.
    performance_schema_max_sql_text_length 1024 performance_schema_max_sql_text_length 1024 표시되는 SQL 텍스트의 최대 길이입니다.
performance_schema_max_stage_classes 150 performance_schema_max_stage_classes 175 performance_schema_max_stage_classes 150 최대 스테이지 악기 수를 지정합니다.
performance_schema_max_statement_classes 178 performance_schema_max_statement_classes 219 performance_schema_max_statement_classes 193 최대 명령문 도구 수를 지정합니다. 사용 가능한 명령문 수에 따라 서버 빌드시 자동으로 계산됩니다. 양수 값으로 변경해도 아무런 이점이 없으며 불필요한 메모리가 할당 될 가능성이 높으므로 자동 크기 조정 또는 비활성화 상태로 두어야합니다. 0으로 설정하면 모든 명령문 인스 트루먼 테이션이 사용 불가능하며이 목적으로 메모리가 할당되지 않습니다.
    performance_schema_max_statement_stack 10 performance_schema_max_statement_stack 10 EVENTS_STATEMENTS_CURRENT의 스레드당 행 수입니다.
performance_schema_max_table_handles 2858 performance_schema_max_table_handles -1 performance_schema_max_table_handles -1 열린 테이블 개체의 최대 수를 지정합니다.
performance_schema_max_table_instances 667 performance_schema_max_table_instances -1 performance_schema_max_table_instances -1 계측된 테이블 개체의 최대 수를 지정합니다.
    performance_schema_max_table_lock_stat -1 performance_schema_max_table_lock_stat -1 계측된 테이블에 대한 최대 잠금 통계 수입니다.
performance_schema_max_thread_classes 50 performance_schema_max_thread_classes 100 performance_schema_max_thread_classes 50 최대 스레드 악기 수를 지정합니다.
performance_schema_max_thread_instances 288 performance_schema_max_thread_instances -1 performance_schema_max_thread_instances -1 실행 중인 서버 스레드( max_connections 및 max_delayed_threads 참조 )를 계측할 수 있는 수를 지정합니다. max_connections 및 max_delayed_threads의 합보다 커야 합니다.
performance_schema_session_connect_attrs_size 512 performance_schema_session_connect_attrs_size 512 performance_schema_session_connect_attrs_size 512 연결 속성 문자열을 보유하기 위해 스레드별로 사전 할당된 메모리입니다. 문자열이 예약된 공간보다 큰 경우 증가합니다.
performance_schema_setup_actors_size 100 performance_schema_setup_actors_size -1 performance_schema_setup_actors_size -1 성능 스키마 setup_actors 테이블 에 저장할 최대 행 수입니다 .
performance_schema_setup_objects_size 100 performance_schema_setup_objects_size -1 performance_schema_setup_objects_size -1 성능 스키마 setup_objects 테이블에 저장할 수 있는 최대 행 수입니다.
    performance_schema_show_processlist OFF      
performance_schema_users_size 100 performance_schema_users_size -1 performance_schema_users_size -1 performance_schema.users 테이블 의 행 수입니다 . 0으로 설정하면 성능 스키마 가 사용자 테이블에 연결 통계를 저장하지 않습니다.

MySQL 종류 버전별 performance_schema 의 테이블 목록 비교 및 설명 입니다.

중요하다고 생각되는 것들은 붉은글자로 강조표시 하였습니다.

MariaDB 10.1.48 MySQL 8.0.30 MySQL 5.7.37 Description
accounts accounts accounts 클라이언트 계정별 연결 통계
  binary_log_transaction_compression_stats   바이너리 로그 트랜잭션 압축
cond_instances cond_instances cond_instances 동기화 개체 인스턴스
  data_lock_waits   데이터 잠금 대기 관계
  data_locks   보유 및 요청된 데이터 잠금
  error_log   서버 오류 로그 최근 항목
  events_errors_summary_by_account_by_error   계정당 오류 및 오류 코드
  events_errors_summary_by_host_by_error   호스트당 오류 및 오류 코드
  events_errors_summary_by_thread_by_error   스레드당 오류 및 오류 코드
  events_errors_summary_by_user_by_error   사용자당 오류 및 오류 코드
  events_errors_summary_global_by_error   오류 코드당 오류
events_stages_current events_stages_current events_stages_current 현재 스테이지 이벤트
events_stages_history events_stages_history events_stages_history 스레드당 가장 최근의 스테이지 이벤트
events_stages_history_long events_stages_history_long events_stages_history_long 가장 최근의 스테이지 이벤트 전체
events_stages_summary_by_account_by_event_name events_stages_summary_by_account_by_event_name events_stages_summary_by_account_by_event_name 계정별 스테이지 이벤트 및 이벤트명
events_stages_summary_by_host_by_event_name events_stages_summary_by_host_by_event_name events_stages_summary_by_host_by_event_name 호스트 이름 및 이벤트 이름별 스테이지 이벤트
events_stages_summary_by_thread_by_event_name events_stages_summary_by_thread_by_event_name events_stages_summary_by_thread_by_event_name 스레드 및 이벤트 이름당 스테이지 대기
events_stages_summary_by_user_by_event_name events_stages_summary_by_user_by_event_name events_stages_summary_by_user_by_event_name 사용자 이름 및 이벤트 이름별 스테이지 이벤트
events_stages_summary_global_by_event_name events_stages_summary_global_by_event_name events_stages_summary_global_by_event_name 이벤트 이름당 단계 대기
events_statements_current events_statements_current events_statements_current 현재 이벤트
  events_statements_histogram_by_digest   스키마 및 다이제스트 값별 명령문 히스토그램
  events_statements_histogram_global   전역적으로 요약된 명령문 히스토그램
events_statements_history events_statements_history events_statements_history 스레드당 가장 최근의 명령문 이벤트
events_statements_history_long events_statements_history_long events_statements_history_long 가장 최근의 명세서 이벤트 전체
events_statements_summary_by_account_by_event_name events_statements_summary_by_account_by_event_name events_statements_summary_by_account_by_event_name 계정별 명세서 이벤트 및 이벤트명
events_statements_summary_by_digest events_statements_summary_by_digest events_statements_summary_by_digest 스키마별 명령문 이벤트 및 다이제스트 값
events_statements_summary_by_host_by_event_name events_statements_summary_by_host_by_event_name events_statements_summary_by_host_by_event_name 호스트 이름 및 이벤트 이름별 명령문 이벤트
  events_statements_summary_by_program events_statements_summary_by_program 저장 프로그램(함수/SP)당 명령문 이벤트
events_statements_summary_by_thread_by_event_name events_statements_summary_by_thread_by_event_name events_statements_summary_by_thread_by_event_name 스레드별 명령문 이벤트 및 이벤트 이름
events_statements_summary_by_user_by_event_name events_statements_summary_by_user_by_event_name events_statements_summary_by_user_by_event_name 사용자 이름 및 이벤트 이름별 명령문 이벤트
events_statements_summary_global_by_event_name events_statements_summary_global_by_event_name events_statements_summary_global_by_event_name 이벤트 이름당 명령문 이벤트
  events_transactions_current events_transactions_current 현재 거래 이벤트
  events_transactions_history events_transactions_history 스레드당 가장 최근의 트랜잭션 이벤트
  events_transactions_history_long events_transactions_history_long 가장 최근의 거래 이벤트 전체
  events_transactions_summary_by_account_by_event_name events_transactions_summary_by_account_by_event_name 계정별 거래 이벤트 및 이벤트 이름
  events_transactions_summary_by_host_by_event_name events_transactions_summary_by_host_by_event_name 호스트 이름 및 이벤트 이름별 트랜잭션 이벤트
  events_transactions_summary_by_thread_by_event_name events_transactions_summary_by_thread_by_event_name 스레드별 트랜잭션 이벤트 및 이벤트 이름
  events_transactions_summary_by_user_by_event_name events_transactions_summary_by_user_by_event_name 사용자 이름 및 이벤트 이름별 트랜잭션 이벤트
  events_transactions_summary_global_by_event_name events_transactions_summary_global_by_event_name 이벤트 이름별 트랜잭션 이벤트
events_waits_current events_waits_current events_waits_current 현재 대기 이벤트
events_waits_history events_waits_history events_waits_history 스레드당 가장 최근의 대기 이벤트
events_waits_history_long events_waits_history_long events_waits_history_long 가장 최근의 대기 이벤트 전체
events_waits_summary_by_account_by_event_name events_waits_summary_by_account_by_event_name events_waits_summary_by_account_by_event_name 계정 및 이벤트 이름별 대기 이벤트
events_waits_summary_by_host_by_event_name events_waits_summary_by_host_by_event_name events_waits_summary_by_host_by_event_name 호스트 이름 및 이벤트 이름별 대기 이벤트
events_waits_summary_by_instance events_waits_summary_by_instance events_waits_summary_by_instance 인스턴스당 대기 이벤트
events_waits_summary_by_thread_by_event_name events_waits_summary_by_thread_by_event_name events_waits_summary_by_thread_by_event_name 스레드 및 이벤트 이름별 대기 이벤트
events_waits_summary_by_user_by_event_name events_waits_summary_by_user_by_event_name events_waits_summary_by_user_by_event_name 사용자 이름 및 이벤트 이름별 대기 이벤트
events_waits_summary_global_by_event_name events_waits_summary_global_by_event_name events_waits_summary_global_by_event_name 이벤트 이름별 대기 이벤트
file_instances file_instances file_instances 파일 인스턴스
file_summary_by_event_name file_summary_by_event_name file_summary_by_event_name 이벤트 이름당 파일 이벤트
file_summary_by_instance file_summary_by_instance file_summary_by_instance 파일 인스턴스당 파일 이벤트
  global_status global_status 전역 상태 변수
  global_variables global_variables 전역 시스템 변수
host_cache host_cache host_cache 내부 호스트 캐시의 정보
hosts hosts hosts 클라이언트 호스트 이름당 연결 통계
  innodb_redo_log_files    
  keyring_component_status   설치된 키링 구성 요소에 대한 상태 정보
  keyring_keys   키링 키에 대한 메타데이터
  log_status   백업용 서버 로그에 대한 정보
  memory_summary_by_account_by_event_name memory_summary_by_account_by_event_name 계정 및 이벤트 이름별 메모리 작업
  memory_summary_by_host_by_event_name memory_summary_by_host_by_event_name 호스트 및 이벤트 이름별 메모리 작업
  memory_summary_by_thread_by_event_name memory_summary_by_thread_by_event_name 스레드 및 이벤트 이름당 메모리 작업
  memory_summary_by_user_by_event_name memory_summary_by_user_by_event_name 사용자 및 이벤트 이름별 메모리 작업
  memory_summary_global_by_event_name memory_summary_global_by_event_name 이벤트 이름당 전역 메모리 작업
  metadata_locks metadata_locks 메타데이터 잠금 및 잠금 요청
mutex_instances mutex_instances mutex_instances 뮤텍스 동기화 개체 인스턴스
objects_summary_global_by_type objects_summary_global_by_type objects_summary_global_by_type 개체 요약
performance_timers performance_timers performance_timers 사용 가능한 이벤트 타이머
  persisted_variables   mysqld-auto.cnf 파일 내용
  prepared_statements_instances prepared_statements_instances 준비된 명령문 인스턴스 및 통계
  processlist   프로세스 목록 정보(show processlist 와 동일)
  replication_applier_configuration replication_applier_configuration 복제본의 복제 적용자에 대한 구성 매개변수
  replication_applier_filters   현재 복제본에 대한 채널별 복제 필터
  replication_applier_global_filters   현재 복제본의 전역 복제 필터
  replication_applier_status replication_applier_status 복제본의 복제 적용자의 현재 상태
  replication_applier_status_by_coordinator replication_applier_status_by_coordinator SQL 또는 조정자 스레드 적용자 상태
  replication_applier_status_by_worker replication_applier_status_by_worker 작업자 스레드 적용자 상태
  replication_asynchronous_connection_failover   비동기 연결 장애 조치 메커니즘에 대한 소스 목록
  replication_asynchronous_connection_failover_managed   비동기식 연결 장애 조치 메커니즘을 위한 관리 소스 목록
  replication_connection_configuration replication_connection_configuration 소스 연결을 위한 구성 매개변수
  replication_connection_status replication_connection_status 현재 소스 연결 상태
  replication_group_member_stats replication_group_member_stats 복제 그룹 구성원 통계
  replication_group_members replication_group_members 복제 그룹 구성원 네트워크 및 상태
rwlock_instances rwlock_instances rwlock_instances 동기화 개체 인스턴스 잠금
session_account_connect_attrs session_account_connect_attrs session_account_connect_attrs 현재 세션당 연결 속성
session_connect_attrs session_connect_attrs session_connect_attrs 모든 세션에 대한 연결 속성
  session_status session_status 현재 세션의 상태 변수
  session_variables session_variables 현재 세션의 시스템 변수
setup_actors setup_actors setup_actors 새 포그라운드 스레드에 대한 모니터링을 초기화하는 방법
setup_consumers setup_consumers setup_consumers 이벤트 정보를 저장할 수 있는 소비자
setup_instruments setup_instruments setup_instruments 이벤트를 수집할 수 있는 계측 개체의 클래스
setup_objects setup_objects setup_objects 모니터링해야 하는 개체
  setup_threads   계측된 스레드 이름 및 속성
setup_timers   setup_timers  
socket_instances socket_instances socket_instances 활성 연결 인스턴스
socket_summary_by_event_name socket_summary_by_event_name socket_summary_by_event_name 이벤트 이름당 소켓 대기 및 I/O
socket_summary_by_instance socket_summary_by_instance socket_summary_by_instance 소켓 대기 및 인스턴스당 I/O
  status_by_account status_by_account 계정당 세션 상태 변수
  status_by_host status_by_host 호스트 이름당 세션 상태 변수
  status_by_thread status_by_thread 세션당 세션 상태 변수
  status_by_user status_by_user 사용자 이름별 세션 상태 변수
  table_handles table_handles 테이블 잠금 및 잠금 요청
table_io_waits_summary_by_index_usage table_io_waits_summary_by_index_usage table_io_waits_summary_by_index_usage 인덱스당 테이블 I/O 대기
table_io_waits_summary_by_table table_io_waits_summary_by_table table_io_waits_summary_by_table 테이블당 테이블 I/O 대기
table_lock_waits_summary_by_table table_lock_waits_summary_by_table table_lock_waits_summary_by_table 테이블당 테이블 잠금 대기
threads threads threads 서버 스레드에 대한 정보
  tls_channel_status   각 연결 인터페이스에 대한 TLS 상태
  user_defined_functions   등록된 로드 가능한 함수
  user_variables_by_thread   스레드당 사용자 정의 변수
users users user_variables_by_thread 클라이언트 사용자 이름당 연결 통계
  variables_by_thread users 세션당 세션 시스템 변수
  variables_info variables_by_thread 시스템 변수가 가장 최근에 설정되는 방식

파일명 혹은 변수에 '-'가 제거된 날짜값을 사용하게 되는데(20220715)

날짜 형식으로 변환할 때 MySQL 에서는 str_to_date 함수를 사용할 수 있습니다.

%Y 4자리 년도 %T hh:mm:ss
%y 2자리 년도 %r hh:mm:ss AM/PM
%m 2자리 월(01, 02, 10, 11 ...) %M 월 (영문 전체 March, July ...)
%c 월(1, 2, 10, 11 ...) %b 월 (영문 축약 Mar, Jul ...)
%d 2자리 일(01, 01, 10, 11 ...) %W 요일 (영문 전체 Monday, Thursday ...)
%e 일(1, 2, 10, 11 ...) %a 요일 (영문 축약 Mon, Thu ...) 
%H 24시간제 시간    
%l 12시간제 시간    
%i 2자리 분 (05, 15 ...)    
%S 2자리 초 (05, 15 ...)    

사용 방법은 위 포맷을 참고하여 아래와 같이 사용해 주시면 됩니다.

하지만 아래와 같이 31을 넘어가는 날짜가 입력되면 null을 출력하지만 

4월31을 입력할 경우 4월30일 에서 하루 지난 5월1일을 출력하는 오류가 있습니다.

-- MySQL 5.7.37 / MySQL 8.0.23 / MariaDB 10.1.48 모두에서 아래와 같이 출력 됩니다.

select str_to_date(20220230, '%Y%m%d');   -- 2022-03-02 출력 (Error: 22년 2월은 28일 까지만 존재)
select str_to_date(20220430, '%Y%m%d');   -- 2022-04-30 출력
select str_to_date(20220431, '%Y%m%d');   -- 2022-05-01 출력 (Error: 4월은 30일 까지만 존재함)
select str_to_date(20220432, '%Y%m%d');   -- null 출력
select str_to_date(20220531, '%Y%m%d');   -- 2022-05-31 출력
select str_to_date(20220532, '%Y%m%d');   -- null 출력

입력된 날짜의 무결성이 중요하다면 함수를 만들어 사용하는 것이 좋을 것 같습니다.

단일 PC에 동일 버전의 MySQL(MariaDB)을 2개 설치하기 위해서는 Installer 파일로는 설치가 되지 않습니다.

그럴경우 직접 기존 설치된 폴더를 복사하여 MySQL을 구동하는 방법을 설명 드리겠습니다.

현재 제 노트북에는 MySQL 이 2개 , MariaDB 가 2개 설치되어 있습니다.

이 중 MySQL 8.0버전의 DB를 하다 더 설치 및 구동해 보겠습니다.

 

1. MySQL Server 8.0 설치 & 데이터 폴더 복사

  - 총 2개 폴더를 복사하여 다른 이름으로 붙여넣기 해주셔야 합니다.

  - 저는 _Sub_1 으로 복사하겠습니다.

    ✔ 프로그램 폴더

원본 복사
c:\Program Files\MySQL\MySQL Server 8.0\ c:\Program Files\MySQL\MySQL Server 8.0_Sub_1\

    ✔ 데이터 폴더

원본 복사
c:\ProgramData\MySQL\MySQL Server 8.0\  

 

2. 복사한 데이터 폴더의 my.ini 수정

    ✔ port, report_port, datadir, basedir 항목의 값을 변경합니다. 4개 항목 외 기존 경로 및 port가 지정된 항목은 함께 수정해 주어야 합니다.

원본 복사

 

3. MySQL Install 명령어 실행 & 서비스 등록

    ✔ 복사한 프로그램 폴더로 이동하여 아래와 같이 Install 명령 실행

    ✔ [복사한프로그램폴더\bin\mysqld.exe] --install  [서비스명] --defaults-file="복사한 데이터 폴더의 ini파일"

    ✔ Ex:  "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --install MySQL57_25000 --defaults-file="F:\MySQL\MySQL Server 5.7_25000\my.ini"

  • 위에서 입력한 서비스명으로 서비스탭에 등록 됩니다.
  • 반드시 관리자 권한으로 CMD를 실행하셔야 서비스가 정상 등록됩니다.
  • 꼭 복사한 프로그램폴더의 mysqld 실행 파일의 경로를 명시해 주시길 바랍니다.

 

4. 서비스 시작

    ✔ 서비스 탭에서 시작 버튼을 눌러 주시면 됩니다.

설명에 사용한 MySQL 버전 : 5.7.20

 

1. Scheduler 확인

show global variables like '%schedule%';

사용 가능할 경우 ON, 그렇지 않을 경우 OFF 로 표시 됩니다.

1-1. Scheduler 사용 설정

   ini를 수정하게 되면 MySQL 을 재시작 해주어야 합니다. 그렇지 않을 경우 ini 수정 후 set global 명령어를 통해서

   수동으로 설정을 변경해 주시면 됩니다. 추후 재시작 하게되면 그때부터는 ini의 설정에 따라서 동작 하게 됩니다.

    ini 에 아래 구문을 추가합니다. 

event_scheduler = 1

혹은 

event_scheduler = ON

   "1" 이나 "ON" 이나 동일하게 동작(설정) 됩니다.

1-2. Process 확인

show processlist;

 Scheduler 설정을 정상적으로 완료하였을 경우 아래와 같이 event_scheduler 데몬이 접속 중임이 확인 됩니다.

 

2. Schedule 생성

  ◈ Schedule 은 DB에 종속되기에 명령을 실행할 DB가 선택된 상태에서 생성해야 합니다.

DROP EVENT IF EXISTS `calc_ranking`;
DELIMITER $
CREATE EVENT IF NOT EXISTS `calc_ranking`
ON SCHEDULE
	EVERY 5 HOUR                  -- 5시간 마다 실행 (사용 가능 형식: second, minute, day)
	STARTS '2020-01-01 00:00:00'  -- 지정하지 않을 경우 현재 시간부터 5시간 경과 후에 첫 스케줄러가 동작됨
ON COMPLETION PRESERVE
ENABLE
COMMENT 'calc_profile_ranking'
DO 
BEGIN
    call test_procedure(1);
    UPDATE tbl_test set action_status = 1;
END$
DELIMITER ;

  - 매일 5시에 실행되는 작업을 만들고 싶을 경우 ON SCHEDULE 부분을 아래와 같이 수정 합니다.

ON SCHEDULE
	EVERY 1 DAY                   -- 하루에 한번
	STARTS '2020-01-01 05:00:00'  -- 기준 시각이 05시 이기 때문에 매일 5시에 스케줄러 실행

  - 특정 문서의 경우 매일 특정 시간에 실행되는 스케줄을 등록하기 위해 아래와 같은 구문을 사용하는데

그럴 필요 없이 과거 날짜의 특정 시간을 시작시간으로 설정하면 해당 시간 을 기준으로 하루에 한번 실행 됩니다.

STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)

 

3. Schedule 확인

  ◈ Schedule 은 DB에 종속되기에 명령을 실행할 DB가 먼저 선택되어 있어야 합니다.

SHOW EVENTS;	-- 현재 선택된 DB에 등록된 Schedule을 조회 합니다.
or
SELECT * FROM information_schema.EVENTS;  -- 모든 DB에 등록된 설정을 조회 합니다.

SHOW EVENTS
SELECT * FROM information_schema.EVENTS

- Schedule 등록 스크립트를 확인하실 수 있습니다.

SHOW CREATE EVENT `Schedule Name`;
SHOW CREATE EVENT `calc_ranking`;

- Create Event 컬럼의 내용은 아래와 같습니다.

CREATE DEFINER=`root`@`%` EVENT `calc_ranking` 
ON SCHEDULE EVERY 5 HOUR STARTS '2020-01-01 00:00:00' 
ON COMPLETION PRESERVE ENABLE COMMENT 'calc_profile_ranking' 
DO BEGIN
    call test_procedure(1);
    UPDATE tbl_test set action_status = 1;
 END

 

4. 삭제

DROP event `이벤트명`;
DROP EVENT `calc_ranking`;

 

이상 입니다.

특정 테이블의 조회 결과(대량 ROW)를 파일로 저장하고

저정된 결과 파일을 다시 DB(Table)로 저장하는 방법 입니다.

대량의 Row(수백 MB)이기 때문에 쿼리를 통한 Insert가 아닌 load data 명령을 통해 수행 합니다.

  대상 테이블 구조

tbl_user_mode_score

 

  다량의 조회 결과를(1000만건) 파일로 저장하는 쿼리 입니다.

select * from tbl_user_mode_score limit 10000000
INTO OUTFILE 'e:\query_result_1000man.txt'
FIELDS TERMINATED BY '\t'
ENCLOSED BY ''
LINES TERMINATED BY '\n';

  - 조회 결과는 아래와 같습니다. (Field 와 Field 는 탭으로 구분)

Row 수: 1000만건, 시간: 7.203 sec, 파일 크기: 367 MB

 

 

 위 조회 결과를 별도 Table에 저장하는 방법 입니다.

    1. 데이터를 저장할 DB에 조회 내용과 동일한 구조의 테이블을 생성 합니다.

    2. cmd 창에서 mysql 콘솔에 접속 합니다.

    3. 아래 명령어를 실행하여 데이터를 입력 합니다.

load data infile 'e:/query_result_1000man.txt' into table tbl_user_mode_score ( usn, mode_idx, win_cnt, lose_cnt, last_play_date ) ;

    - 입력 완료시 메시지 : 입력 건수 및 오류 상황이 표시 됩니다.

Row 수: 1000만건, 시간: 1 min 6.337 sec

 

이상 입니다.

Oracle 과 MSSQL에 있는 DB Link 서비스를 MySQL에서 지원하는 FEDERATED 엔진을 이용하여 구현하는 방법 입니다.


1. 설치되어 있는 엔진 확인

  - CentOS에서 yum 으로 설치했을때 기본적으로 사용 가능한 엔지들의 목록 입니다.

2. 엔진을 사용할 수 있도록 설치

 

3. FEDERATED 엔진의 설치여부 확인

  - FEDERATED 엔진이 목록에 표시되지만 사용 가능하지 않은 상태 입니다.


4. 엔진 사용 가능 하도록 my.cnf 수정

  - [mysqld] 하위에  federated 항목을 추가 합니다.


5. 엔진의 상태를 확인 합니다.

 - FEDERATED 엔진의 Support 상태가 YES 로 변경 되었습니다.


----------------------------- FEDERATED 엔진을 사용하여 테이블을 생성하여 원격지 테이블과 연결 -------------------------

1. 원격지에 테이블을 생성 합니다.

- 실제 데이터가 입력되는 테이블 입니다.

- 데이터 폴더에는 .frm(구조) / .ibd(데이터) 파일이 생성 됩니다.

CREATE TABLE `cityholic_db`.`cart_product` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '아이디',

  `users_id` bigint(20) unsigned NOT NULL COMMENT '고객아이디',

  `product_id` bigint(20) NOT NULL COMMENT '상품아이디',

  `option_code` varchar(50) NOT NULL COMMENT '상품옵션코드',

  `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '상품 개수',

  PRIMARY KEY (`users_id`,`product_id`,`option_code `),

  UNIQUE KEY `id_UNIQUE` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='카트에 담긴 상품';


◈ 만약 원격지 DB의 비밀번호에 특수문자'@' 를 사용하는 경우 2번 방식으로는 테이블을 생성할 수 없으니

     2번을 제외하고 3번 항목부터 진행해 주시면 됩니다.


2. 로컬에 테이블을 생성 합니다.

 - 원격지의 테이블을 참조하기 위한 테이블 입니다

 - 데이터 폴더에는 .frm(구조) 파일만 생성 됩니다.

CREATE TABLE `cityholic_db`.`cart_product` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '아이디',

  `users_id` bigint(20) unsigned NOT NULL COMMENT '고객아이디',

  `product_id` bigint(20) NOT NULL COMMENT '상품아이디',

  `option_code` varchar(50) NOT NULL COMMENT '상품옵션코드',

  `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '상품 개수',

  PRIMARY KEY (`users_id`,`product_id`,`option_code `),

  UNIQUE KEY `id_UNIQUE` (`id`)

) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COMMENT='카트에 담긴 상품'

CONNECTION='mysql://root:dldusrn1@10.3.0.27:3306/cityholic_db/cart_product';

   - CONNECTION 옵션의 구성 = 'mysql://[계정]:[비밀번호]@[서버ip]:[port]/[원격지DB명]/[원격지 테이블명]'

   - Pass 에서 특수문자 '@' 를 사용하는 경우 아래와 같이 테이블 생성시 오류가 발생합니다.

     



3. 테이블 생성시 사용할 SERVER 개체를 생성 합니다.

1
2
3
CREATE SERVER [서버명]
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'root', PASSWORD 'XXXX@XXXX', HOST '192.168.197.128', PORT 3306, DATABASE 'db_link_test');
cs

      - 생성된 서버 정보를 조회합니다.

1
SELECT * FROM mysql.servers;
cs


4. 생성된 서버로 테이블을 생성 합니다.

- 로컬에 생성하는 테이블과 원격지 테이블이 동일하다면 CONNECTION 옵션에서 테이블명은 생략 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `cityholic_db`.`cart_product` (
  `id`             bigint(20)     NOT NULL AUTO_INCREMENT COMMENT '아이디',
  `users_id`     bigint(20)     unsigned NOT NULL COMMENT '고객아이디',
  `product_id`     bigint(20)     NOT NULL COMMENT '상품아이디',
  `option_code` varchar(50NOT NULL COMMENT '상품옵션코드',
  `quantity`     int(11)     NOT NULL DEFAULT '0' COMMENT '상품 개수',
 
  PRIMARY KEY (`users_id`,`product_id`,`option_code `),
  UNIQUE KEY `id_UNIQUE` (`id`)
ENGINE=FEDERATED DEFAULT CHARSET=utf8 COMMENT='카트에 담긴 상품'
CONNECTION='[서버명]/cart_product';
cs


>> . 이상 모든 설정을 완료 했다면 로컬에서 원격지의 Table을 로컬 테이블 처럼 사용 가능합니다. select, insert, update, delete 모두 가능 합니다.


MySQL / MariaDB에서 Slow Query Log를 활성화하기 위한 방법과 실시간으로 변경 가능한 Variable에 대해서 설명드리겠습니다. 

개인적으로는 Slow Query Log를 테이블로 관리하는것을 좋아합니다. 실행된 쿼리 검색 및 통계내가가 편리하기 때문입니다.

아래 3개의 쿼리를 실행하여 설정 가능한 변수를 확인할 수 있습니다. 쿼리 결과

show global variables like '%slow%';

show global variables like '%long%';

show global variables like '%log_output%';

 

>> my.ini 파일 수정 : 노란색 영역의 3개 항목을 추가하신 후 MySQL / MariaDB 서비스를 재시작해주시면 됩니다.

set global 쿼리를 사용해서 설정을 변경할 수 있습니다.

하지만 long_query_time 변수는, 쿼리로는 변경은 가능하지만 실제 반영은 안 되고 있기에 ini 파일에서 설정해 주셔야 합니다.

my.ini 수정

slow_query_log, log_output 은 운용 중인 상태에서 서비스 재시작 없이 설정 변경이 가능하며 즉시 해당 설정이 적용됩니다.

제어판 > 서비스 > 재시작

 

>> 테이블에 기록된 Slow Query 결과입니다.

Slow Query Log in Table

Index 정보를 조회하여 하나의 컬럼에 Key 컬럼을 ','로 구분하여 출력하는 쿼리 입니다.
 
실행 결과)
쿼리)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
select ta.table_name
    , index_name, max(tb.constraint_type) INDEX_DESCRIPTION  
    , concat_ws(', ', max(col_1), max(col_2), max(col_3), max(col_4), max(col_5)  
    , max(col_6), max(col_7), max(col_8), max(col_9), max(col_10)) INDEX_KEYS  
from (  
        select table_schema, `table_name`  
        , (CONSTRAINT_NAME) INDEX_NAME  
        , ('') INDEX_DESCRIPTION  
        , (case ordinal_position when 1 then column_name else null end) col_1  
        , (case ordinal_position when 2 then column_name else null end) col_2  
        , (case ordinal_position when 3 then column_name else null end) col_3  
        , (case ordinal_position when 4 then column_name else null end) col_4  
        , (case ordinal_position when 5 then column_name else null end) col_5  
        , (case ordinal_position when 6 then column_name else null end) col_6  
        , (case ordinal_position when 7 then column_name else null end) col_7  
        , (case ordinal_position when 8 then column_name else null end) col_8  
        , (case ordinal_position when 9 then column_name else null end) col_9  
        , (case ordinal_position when 10 then column_name else null end) col_10  
        from information_schema.KEY_COLUMN_USAGE  
        where table_schema = 'db_schema' and `table_name` like '%info%'  
    ) ta  
left join information_schema.table_constraints tb   
on ta.table_schema = tb.table_schema and ta.`table_name` = tb.`table_name` and ta.index_name = tb.constraint_name  
group by ta.table_name, index_name 
order by ta.table_name, index_name asc
;
 
cs

안녕하세요. 

제가 크롤링 후 올려드리는 MySQL 백업파일의 복원방법을 문의하시는 분들이 있어서 복원 방법 설명드립니다.

제가 올리는 백업파일의 경우 아래와 같이 Database를 생성하는 구문이 없습니다.

그렇기 때문에 먼저 복원할 Database를 생성해 주셔야 합니다.
제가 올리는 백업파일의 명칭이 [db_name]_[날짜] (db_stock_20190407_010101.bak) 이기 때문에 저와 동일하게 db_stock 로 DB를 생성해주셔도 되고, 본인이 미리 생성한 db가 있다면 그대로 사용해 주셔도 됩니다. 

db를 생성할 경우에는 cmd 창을 열어 MySQL에 접속하신 후 create database [db 명]을 실행해 주시면 됩니다.

show databases; 를 실행하여 생성된 db를 확인합니다.

압축파일이 위치한 폴더로 이동 후 mysql -uroot -p [db 명] < [백업파일명]  을 실행하시면 몇분 후 DB 복원이 완료됩니다.

복원 완료 후 MySQL Workbench 로 접속한 모습입니다.

mysql 의 조회 결과를 CSV 파일로 출력하는 쿼리 입니다.

조회된 결과에서 컬럼명을 추가해 주기 위하여 union을 사용하였습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 'stock_code''basic_date''open_value''high_value''low_value'
    , 'close_value''yesterday_ratio''updown_ratio''volume_value'
UNION ALL
SELECT ta.stock_code, ta.basic_date, ta.open_value, ta.high_value, ta.low_value
        , ta.close_value, ta.yesterday_ratio, ta.updown_ratio, ta.volume_value
FROM tbl_stock_history_daum ta 
inner join (SELECT stock_code 
            FROM tbl_coporation_info 
            where stock_type='KOSDAQ' order by stock_code asc limit 0,50) tb
on ta.stock_code = tb.stock_code
INTO OUTFILE '/Volumes/USB128G/DataBase/tbl_stock_history_daum_KOSDAQ_000250_011040.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
cs


궁금하신 사항은 댓글로 남겨 주세요.

라즈베리에 DB 와 Python 을 설치하여 크롤링 데몬을 돌리고 있습니다.

DB 백업은 정기적으로 하고 있었는데 , 백업 파일을 동일 머신에 놓았더니 이번에 장애로 디스크가 날라 갔네요.

그래서, DB 백업 -> 압축 -> 별도 서버로 전송(Raspberry_02) 로 전송하는 스크립트로 수정 하였습니다.


> 동작 

오늘 날짜 폴더 생성 -> DB Backup -> 오래된 백업 폴더 삭제 -> 당일자 백업폴더 압축 -> 별도 서버에 전달 -> 압축파일 삭제 -> 별도 서버에서 4일전 압축파일 삭제


저는 crontab 에서 하루에 한번씩 호출 하도록 설정해 놓았습니다.


>    본문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
 
 
#Mysql DB Backup Script
 
# 오늘
nowdate=$(date +"%Y%m%d")
echo $nowdate
# 현재 시간
nowtime=$(date +"%H%M%S")
 
# 4일전
beforeday=$(date +"%Y%m%d" -'-4days')
echo $beforeday
 
#오늘날짜 폴더 생성
mkdir /home/pi/DB_Backup/$nowdate
 
#DB_LOTTO 백업
mysqldump -uroot -p[password] --routines DB_AUCTION > /home/pi/DB_Backup/$nowdate/DB_AUCTION_"$nowdate"_"$nowtime".bak
 
mysqldump -uroot -p[password] --routines DB_FINANCE > /home/pi/DB_Backup/$nowdate/DB_FINANCE_"$nowdate"_"$nowtime".bak
 
 
#4일전 날짜의 백업 폴더 삭제
rm -rf /home/pi/DB_Backup/$beforeday
 
 
#오늘 날짜 백업 폴더를 압축
tar cfvzP /home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz /home/pi/DB_Backup/$nowdate/
 
#압축 파일을 라즈베리2에 전달
scp -922 /home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz a209@192.168.0.10:/home/a209/DB_Backup
 
#압축 파일 삭제
rm -/home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz
 
 
#Raspberry-02 에서 4일전 압축 파일을 삭제할 것 
ssh -p922 a209@192.168.0.10 "rm -f /home/a209/DB_Backup/$beforeday*.tgz"
 
cs


> 스크립트 파일 :      script_db_backup 2.sh



> 질문이나 의견 있으시면 댓글로 부탁 드립니다.

얼마전 면접을 보다가, 아래 그림과 같은 데이터 구조에서의 탐색 방법에 대한 DB 설계 및 쿼리 작성을 하시오 라는 질문에

최적의 답변을 하지 못해. 집에 와서 테스트 하였다.

 

질문의 핵심은 특정 node 를 선택했을때, 최상위 부모까지 올라가는 흐름을 한줄로 표현하는 것이었다.

 

ex) 그림20 > 그림17 > 그림13 > 그림10 > 그림9 > 그림3 > 그림1

 

데이터의 구조는 아래와 같다.


테이블로 옮기면,


일반적인 재귀호출 용 테이블의 구조가 된다. 여기에 아래 쿼리를 실행하면 


1
2
3
4
5
6
7
8
9
set @id := 26;        -- node id
set @L := 0;
 
 
SELECT @r AS _ID
    , (SELECT @r := pid FROM t_test WHERE id = _ID) AS _PARENT_ID
    , (@L := @L + 1) AS level
FROM ( SELECT @r := @id) AS vars, (SELECT * FROM t_test WHERE id < @id) AS h
WHERE @r <> 0;
cs


그림과 같이 우리가 원하는 결과를 얻을 수 있다.

약간만 수정하면 두루 두루 쓸모가 많을것 같다.

이래서 실무자 면접은 참 재미있는것 같다. 내 실력을 평가받는 자리도 되고 그로인해 공부도 되고.




---------------------------------------------------------- ID , PID 가 문자형인경우 ----------------------------------------------------------

ID , PID 문자형일 경우 어떻게 수정해야 하는지에 대한 문의가 있어 관련 내용 공유 드립니다.

위 데이터에서 각 컬럼을 문자형으로 변경 후 앞에 a를 붙여 a1, a2, a3 형식으로 변경 하였습니다.


1
2
3
4
5
6
7
8
9
set @id := 'a26';         -- node id
set @L := 0;              -- level 컬럼의 시작 값, 0 입력시 1부터 1씩 증가된 값이 표시 됨
 
SELECT @r AS _ID
    , (SELECT @r := pid FROM t_test WHERE id = @r limit 1) AS _PARENT_ID
    , (@L := @L + 1) AS level
FROM ( SELECT @r := @id) AS vars, (SELECT * FROM t_test WHERE id != @id) AS h
WHERE @r <> 'a0';          -- > root node를 만나면 탐색을 중지하기 위함
-- WHERE @r <> '-';        -- > null 이 아닌 임이의 값 (예 : '-') 입력
cs


출력 결과 : 


MSSQL 로 구현하면 >> https://devse.tistory.com/69

mysql 5.6 이후 버전에서는 셀이나 커맨드 라인에서 계정정보를 그대로 노출하면 경고가 발생한다.


Waring: Using a password on the command line interface can be insecure.




작업은 성공하니 문제는 없으나  나중 버전에서는 -p 옵션을 사용할 수 없다는 얘기도 있으니..

그걸 제외 하더라도 스크립트에 계정 정보를 모두가 볼수 있게 적어주는건 좋지 않기 때문에 (보안만 확실하면 큰 문제는 되지 않지만.. 어찌되었건..)

mysql_config_editor 를 사용하여 로그인파일을 생성해 놓고 설정명만을 명시하여 사용할 수 있다.

구문도 짧아지니 이것도 이점이라 할수 있겠다.


ex-1) # mysql_config_editor set --login-path=[접속명칭] --host=[host 정보] --user=[계정명] --password --socket=/tmp/mysql.sock --port=3306

ex-2) # mysql_config_editor set --login-path=[접속명칭] --host=[host 정보] --user=[계정명] --password --port=3306

대부분의 블로그 에서는 ex-1 로 소개하고 있으나 ex-2 처럼 작성 하여도 특별한 문제는 없어 보인다. 

(오늘 처음 써봤고, --socket 옵션에 대해서 특별한 설명은 못 찾겠다 꾀꼬리~)


등록이 완료되면 계정 폴더에 .mylogin.cnf 파일이 생성된다.

열어봐야 읽을수도 없으니 아래 이미지를 보고 궁금증만 푸시길 바란다.

 참고: # chmod 666 .mylogin.cnf 로 권한정보를 수정하게 되면 mysql --login-path=dump_usr 했을때 오류가 발생한다.

        이런 궁금증은 제가 풀어 드릴테니 괜한 시간 낭비는 하지 않기를 바랍니다.


등록 내역을 보고 싶을때는 # mysql_config_editor print --all


mysql 에 접속               # mysql --login-path=dump_usr

특정 접속 정보만 삭제   # mysql_config_editor remove --login-path=dump_usr

전체 정보를 삭제           # mysql_config_editor remove 


이상 궁금증을 해결하다보니 .. 내용이 길어 졌습니다. 이해하고 넘어가 주세요

MySQL 의 binary_log 를 분석하기 위해  more / cat 등으로 열어 보면 글자가 깨져서 표시됩니다.

정상적으로 읽기 위해서는 변환 작업이 필요합니다.

- 로그파일 전체를 변환             : #mysqlbinlog [log 파일명] > [파일명].sql

- 특정 기간의 로그내용만 변환  : 

     #mysqlbinlog --start-datetime='2016-03-01 00:00:00' --stop-datetime='2016-03-21 23:59:59' [log 파일명]  > [파일명].sql

- 특정 형식의 쿼리 내용만 변환 : 

     #mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update" | more      // 콘솔로 출력

     #mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update"  >   [파일명].sql   // 파일로 출력

   * 기타 다양한 조건을 적용할 수 있다 (구글신께 물어 보세요)


하지만 변환 중 아래와 같이 오류가 발생하는 경우가 있습니다.

              -원인은 mysqlbinlog 가 실행될 때 /etc/my.cnf 파일을 읽어 들이는데 mysqlbinlog가  default-character-set 설정을 

                인식할 수 없어 발생한다.

                해결책은 my.cnf 파일에서 [client] 섹션에 있는 default-character-set = utf8 을 주석처리 후 mysqlbinlog 명령을 실행한다.

                작업이 완료된 후 my.cnf 의 default-character-set의 주석은 해제 한다. 

                                 (일부 블로그에서는 mysql을 재 시작하라고 하는데 그럴 필요는 없다.)

                 my.cnf 는 mysql 이 구동시 한번만 읽기 때문에 중간에 변경을 하여도 현재 서비스에는 영향이 없다.

                 mysqlbinlog 또한 구동시에 my.cnf 읽는다.




mysql 에서 분석을 위해 Slow Query log 파일을 초기화 해야할 필요가 있을 때 mysql 을 재시작 하지 않고 초기화 할 수 있는 방법이다.


1. 로그를 다른 이름으로 복사

~]# cp slow.log 20160315.slow.log

2. 원본 로그 파일의 내용을 초기화 한다.

~]# cat /dev/null > slow.log


mysql 서버의 재시작 없이 log 파일의 내용을 초기화 할 수 있다.



mysql 실행 계획을 어떻게 분석해야 하는지에 대한 정리 입니다. 

PDF 파일도 첨부 합니다. 

실행 계획을 출력하는방법은 

EXPLAIN

SELECT * FROM t_table WHERE col='val';

입니다.



mysqldump 로 DB 및 프로시저 백업시 백업 파일에는 주석이 정상적으로 입력되어 있는데 복원시 주석이 제거된다.


복원시 다음과 같이 옵션을 주고 복원하게 되면 주석도 정상적으로 복원 된다. 


mysql -uroot -p -c < dumpfile.sql

OR

mysql -uroot -p --comments < dumpfile.sql



MySQL 의 꽤 괜찮은 Cluster인 Galera Cluster의 테스트 보고서 입니다.


장비사양: MacBook Pro (Retina, 15-inch, Mid 2014), 프로세스:2.5 GHz Intel Core i7, 메모리: 16GB 1600 MHz DDR3

Virtual Box 로 Linux 2대를 구성하여 MySQL Galera Cluster 를 구성하였습니다.

편의상 Master(최초 Cluster 의 Group을 생성하는 머신, service mysql start --wsrep-new-cluster 로 구동) 가 되는 서버를 galera1 이라 하겠습니다.

다른 하나는 galera2 라고 하고요.


테스트 상황:

1. Galera1 / Galera2 가 동작중인 상황에서 Galera2에 장애 발생  >>  Galera1 에서 Insert 발생  >> Galera2 에서 service mysql start 실행

위 그림과 같이 오류 발생 하지만 다시한번  service mysql start 를 하게되면 정상적으로 접속이 가능하다.

만약 이렇게 해도 해결되지 않으면  cd /var/lib/mysql 로 MySQL 데이터 폴더로 가서 rm -f galera.cache ib_* 하여 총 3개의 파일을 삭제 해준 후

Linux를 Reboot 하고 다시한번 mysql 서비스를 실행해 준다.


2. Galera1 / Galera2 가 동작중인 상황에서 Galera1 에 장애 발생  >>  Galera2 에서 Insert 발생  >> Galera1 을 실행

  Galera1 을 재구동 할때는 Galera1이 Master 였다고 하여   service mysql start --wsrep-new-cluster 로 실행하면 않된다.

  만약 위와 같이 실행하게 되면 Galera1이 새로운 Cluster Group을 생성하게 된다.

  이런 경우 Galera1 에서 service mysql start 로 서비스를 실행하게 되면 Galera2 의 Cluster Group에 들어가게 되고 데이터 동기화도 수행 된다.


내 노트북이 좋아서 인지는 모르겠지만 예전에 사용해본 NDB Cluster에 비해서 성능, 장애처리 부분에서 Galera Cluster가 월등히 좋은것 같다.


다만 한가지 약간의 문제점이라면 ... Auto Increment Column 이 있는 테이블에서 Insert 작업이 이루어질 경우

Galera1 은 1,3,5,7,9 로 Insert가 되고 Galera2에서는 2,4,6,8,10 순으로 증가가 된다. 

예로 Galera1 에서 3건을 insert 하면 1,3,5 가 되고 후에 Galera2 에서 2건을 insert 하면 6,8이 된다.

해보진 않았지만 Node가 3개라면.. 각각의 Node 는 3씩 증가시키는 것으로 알고 있다.


이것은 Auto Increment 의 값을 동기화 시키느라 발생하는 Lock 및 성능저하 문제를 해결하기 위한 Galera만의 방법이고

내 기억으로 NDB Cluster 에서는 Auto Increment Column 에서 값이 비는 경우는 없었던 것으로 알고있다.



DB와 연관되는 프로젝트를 성공적으로 진행하려면 Test Data의 양과 질이 절대적으로 좋아야 한다.

그래야만 개발 단계에서 많은 문제를 찾아낼 수 있고 수정할 수 있게 된다.

하지만 현실은 가가가,나나나,다다다,~~~  형식의 그것도 대략 100건 안쪽의 Test Data 만 넣어놓은 상태에서 개발을 진행하는 경우가 흔하다.

그러다 보니 실제 서비스 하는 환경에서는 Data 가 쌓이면서 Query 시간이 길어지고 Data가 오염되면서 각종 문제가 발생하게 된다.

그것을 줄여 보고자 이 글을 쓴다.

아래의 방법은 가장 일반적인 방법이며 응용을 통하여 더 다양하고 많은 양의 Test Data를 만들어 낼수가 있다.

1. 복제의 대상이 되는 기준 집합을 선택 – MySQL 버전에 따라서 아래 3개중 1개의 집합을 사용할 수 있음

 SELECT count(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES;       #기준집합 277 Row , MySQL 5.6 이하

 SELECT count(*) FROM performance_schema.global_variables;                    #기준집합:486 Row , MySQL 5.7 이상


2. 단순 집합 복제 예 – 1 ~  40000 까지의  1개 Column 을 갖는 집합 생성


SELECT @rownum := @rownum +1 AS NUM

FROM (select 1 from performance_schema.global_variables limit 200) as A,

             (select 1 from performance_schema.global_variables limit 200) as B,

             (select @rownum := 0) as tmp

LIMIT 100000;                                                                                              #4만 Row로 복제 (200 * 200)

<수행시간: 40000 row(s) returned  0.0011 sec / 0.0060 sec(Duration / Fetch Time)>


◈ MariaDB 의 경우 performance_schema 환경 변수가 off 되어 있으면 performance_schema.global_variables 테이블에 접근할 수 없습니다.

   INFORMATION_SCHEMA.GLOBAL_VARIABLES 테이블을 사용해 주시길 바랍니다.

결과 집합: 


3. 4만개의 겹치지 않는 12자리 코드 집합을 생성하는 쿼리

SELECT CONCAT(

        SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@rownum)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)

       ,SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed)*36+1, 1)) AS RAND_CD

       ,@rownum := @rownum +1 AS NUM

FROM (SELECT 1 FROM performance_schema.global_variables LIMIT 200) as A

            ,(SELECT 1 FROM performance_schema.global_variables LIMIT 200) as B

WHERE (@rownum:=0)=0

LIMIT 100000; 

<수행시간: 40000 row(s) returned  0.0035 sec / 0.131 sec (Duration / Fetch Time)>

결과 집합: 


Insert Query에 위의 결과 집합만 적용해 주면 몇십만건의 Data도  바로 생성해 넣을 수 있다.

PHP 로 개발을 하면서 DB관련 작업을 컴포넌트(cakephp3)를 사용해서 하게되면

테이블 생성시 자동으로 모든 테이블에 Autoincrement 인 컬럼을 PK로 테이블을 생성하게 된다.

그럴경우 구조가 아주 엉망이다...


그럴경우에 유용하게 사용할 수 있는 쿼리 이다.


CREATE TABLE `t_test` ( 

    `idx` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, 

    `name` varchar(40) NOT NULL COMMENT '코멘트', 

PRIMARY KEY (`idx`)) ENGINE=InnoDB DEFAULT CHARSET=euckr;


쿼리 구조 : REPLACE INTO DB.t_test VALUES([id],[값])

- AutoIncrement 의 자동 증가와는 별도로 값을 입력 수정 할수 있다.  순차적으로 증가하던 ID 값을 몇단계 건너뛰고 지정할 수 있다.


아래는 퀴리 수행시 Table의 변경 사항을 보여준다.




# 계정 정보 확인

--MySQL 5.6 이하

SELECT user,host,password FROM mysql.user;

-- MySQL 5.7 이상

SELECT user,host,authentication_string FROM mysql.user;

* password 라는 Column 이 authentication_string 으로 명칭이 변경 되었다.


#패스워드 변경

-- MySQL 5.6 이하

UPDATE mysql.user SET password = PASSWORD('패스워드') WHERE user = '계정명' AND host = 'host명';

FLUSH PRIVILEGES;

-- MySQL 5.7 이상

SET PASSWORD FOR '계정명'@'host명' = PASSWORD('패스워드');

FLUSH PRIVILEGES;


#계정 등록 및 권한 설정 (모든 버전 동일)

GRANT ALL PRIVILEGES ON *.* TO '계정명'@'host명' IDENTIFIED BY '패스워드'; 

FLUSH PRIVILEGES;



+ Recent posts