General config file parameters for MariaDB
Mariadb Parameters
mysqld ๋ฐ๋ชฌ ํ๋ก์ธ์ค ๊ด๋ จ ์ค์ ๋ค
[mysqld]
core-file # core dump ํ์ผ์ ์์ฑํ๋๋ก ํ๊ธฐ ์ํ ์ค์
user = mysvc01 # MariaDB ์์ง์ owner (user id) = DB๋ฅผ ์คํ์ํฌ OS ๊ณ์
port = 3306 # DB ํฌํธ
socket = /engn001/mysvc01/MARIASVC/mysqld.sock # ์์ผํ์ผ ๊ฒฝ๋ก(๋ก์ปฌ์๋ฒ ์ ์์ ์ฌ์ฉ), ๋ฆฌ๋ชจํธ ์๋ฒ์๋ ip์ port๋ฅผ ์ด์ฉํด์ TCP/IP ํ๋กํ ์ฝ๋ก ์ ๊ทผ
pid-file = /engn001/mysvc01/MARIASVC/mysqld.pid # MariaDB ์๋ฒ๊ฐ ์์ ์ ํ๋ก์ธ์ค ID๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ ๊ฒฝ๋ก (์ ๋์ค ํน์ ๋ฆฌ๋
์ค์์๋ง ์ฌ์ฉ)
basedir = /engn001/mysvc01/mariadb-10.0.26 # MariaDB ์์ง ๊ฒฝ๋ก
datadir = /data001/mysvc01/MARIASVC # DB์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก
tmpdir = /data001/mysvc01/tmpdir_MARIASVC # ๋์คํฌ์ ์์ํ
์ด๋ธ์ด ์์ฑ๋ ๋ ์ฌ์ฉ๋ ๊ฒฝ๋ก
secure_file_priv = /tmp # LOAD_FILE() ํจ์ ๋ฐ LOAD DATA ์ SELECT โฆ INTO OUTFILE ๋ช ๋ น๋ฌธ์ด ํน์ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์์๋ง ๋์์ ํ๋๋ก ํ์
Logging
log-warnings = 3 # 0 ๋นํ์ฑํ
1 ์ด์: ์ฟผ๋ฆฌ๋ฌธ ๋จ์์ ๊ฒฝ๊ณ ๋ด์ฉ๊น์ง ์๋ฌ๋ก๊ทธ์ ๊ธฐ๋ก
log_output = FILE,TABLE # ๋ก๊ทธ ๊ธฐ๋ก ์ ํ (ํ์ผ๊ณผ ํ
์ด๋ธ์ ๊ธฐ๋ก)
log-error = /logs001/mysvc01/MARIASVC/error/mysqld.err # ์๋ฌ ๋ก๊ทธํ์ผ ๊ฒฝ๋ก
general_log = OFF # ์ ๋๋ด ๋ก๊ทธ ๋นํ์ฑํ
DB์์ ์ผ์ด๋๋ ๋ชจ๋ ์์
์ ๋ํ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ฒ ๋๋ฏ๋ก ํ์ํ ๋๋ง ON์ผ๋ก ์ค์ ํด์ ์ฌ์ฉ
general_log_file = /logs001/mysvc01/MARIASVC/general/mysvc01-general.log # ์ ๋๋ด ๋ก๊ทธํ์ผ ๊ฒฝ๋ก
slow_query_log = ON # ๋๋ฆฐ ์ฟผ๋ฆฌ ๊ธฐ๋ก ํ์ฑํ
long_query_time = 0.5 # ๋๋ฆฐ ์ฟผ๋ฆฌ์ ๊ธฐ์ค ์๊ฐ(์ด)
log-slow-verbosity = โquery_plan,innodbโ
log_queries_not_using_indexes = OFF # ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฟผ๋ฆฌ ๊ธฐ๋ก ์ฌ๋ถ
slow_query_log_file = /logs001/mysvc01/MARIASVC/slow/mysvc01-slow.log # ๋๋ฆฐ ์ฟผ๋ฆฌ ๋ก๊ทธํ์ผ ๊ฒฝ๋ก
DB ๊ธฐ๋ณธ ์ค์
skip-name-resolve # ์ญDNS ๊ฒ์ ๋นํ์ฑํ (IP ๊ธฐ๋ฐ์ผ๋ก ์ ์์ ํ๊ฒ ๋๋ฉด hostname lookup ๊ณผ์ ์๋ต)
default_storage_engine=โInnoDBโ # ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง ์ค์
lower_case_table_names = 1 # ํ
์ด๋ธ๋ช
์ ์๋ฌธ์๋ก ์ฒ๋ฆฌ
sysdate-is-now # SYSDATE ๊ตฌ๋ฌธ์ NOW์ ๋์ผํ๊ฒ ์ฒ๋ฆฌ
sql_mode=โTRADITIONAL,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI_QUOTESโ
sql_mode ์ค๋ช
: SQL๋ฌธ ์ฌ์ฉ ์ ํ = ์ฟผ๋ฆฌ ์ ๊ฒ ์์ค
TRADITIONAL = STRICT_TRANS_TABLES,STRICT_ALL_TABLES = ์๋ชป๋ ๊ฐ์ด ์ปฌ๋ผ์ ์
๋ ฅ๋๊ฑฐ๋ ์
๋ฐ์ดํธ๋ ๋ ์๋ฌ๋ฅผ ๋ฐํํจ
NO_ZERO_IN_DATE,NO_ZERO_DATE = ๋ ์งํ์
์ 0000-00-00 ์
๋ ฅ ๋ชป ํ๊ฒ ํจ
ERROR_FOR_DIVISION_BY_ZERO = 0์ผ๋ก ๋๋ ๋๋ ์ค๋ฅ ๋ฐ์์ํด
NO_AUTO_CREATE_USER = ๊ถํ ๋ถ์ฌ ๋ฌธ์ฅ์ด ์คํ๋๋ค๊ณ ํด์ ์๋์ผ๋ก ์ ์ ๋ฅผ ์์ฑํ์ง ์๊ฒ ํจ,NO_ENGINE_SUBSTITUTION = ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ ์๋ ๋์ฒด๋ฅผ ๋ฐฉ์ง
IGNORE_SPACE : ํ๋ก์์ ๋ ํจ์๋ช
๊ณผ ๊ดํธ ์ฌ์ด์ ๊ณต๋ฐฑ ๋ฌด์
ONLY_FULL_GROUP_BY : ๊ทธ๋ฃนํ ์์
์ ํ ๋ GROUP BY ์ ์ ๊ทธ๋ฃนํ ํค ์ปฌ๋ผ๋ค์ด ๋ค ์์ด์ผ๋ง ํจ
ANSI_QUOTES : ํ๋ฐ์ดํ๋ง ๋ฌธ์์ด ๊ฐ ํ์๋ก ์ฌ์ฉ, ์๋ฐ์ดํ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ฅผ ํ๊ธฐ์ ์ฌ์ฉํ ์ ์์
PAD_CHAR_TO_FULL_LENGTH : MariaDB/MySQL์ ๊ธฐ๋ณธ์ ์ผ๋ก CHAR ํ์
๋ VARCHAR ์ฒ๋ผ ๋ฌธ์์ด ๋ค ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋๋ฐ, ๊ณต๋ฐฑ์ ์ ๊ฑฐํ์ง ์๊ณ ์ฑ์ฐ๊ฒ ํ๋ ค๋ฉด ์ค์ ํจ
feedback = ON # MariaDB๋ก ์๋ฌ ๋ด์ฉ ๋ณด๋ด๊ธฐ
event_scheduler = ON # ์ด๋ฒคํธ์ค์ผ์ค๋ฌ(cron, Oracle์ Job๊ณผ ๊ฐ์ ์ญํ ) ํ์ฑํ
performance_schema = ON # performance_schema ํ์ฑํ
performance_schema_max_digest_length=10240 # digest์ ์ต๋ ๊ธธ์ด (digest:์ ํํ์ํจ ์ฟผ๋ฆฌ๋ฌธ, ์์๋ถ๋ถ ๋ฑ์ ํจํดํ์ํจ๋ค.)
plugin-load = server_audit
Character Set
skip-character-set-client-handshake # ํด๋ผ์ด์ธํธ์์ ๋ณด๋ด์ง๋ ๋ฌธ์์
์ ๋ณด๋ฅผ ๋ฌด์ํ๊ณ ์๋ฒ์ ๋ฌธ์์
์ฌ์ฉ
character_set_server = utf8mb4
collation_server = utf8mb4_bin
init_connect=โSET collation_connection = utf8mb4_binโ
init_connect=โSET NAMES utf8mb4โ
Transaction ์ค์
autocommit = ON # autocommit ํ์ฑํ ์ฌ๋ถ
transaction_isolation = โREAD-COMMITTEDโ # replication์ ํ ๋๋ โ๋ ์ฝ๋ ๊ธฐ๋ฐ ๋ณต์ โ๋ฅผ ์ฌ์ฉํ๋๋ก ํจ
transaction_isolation ์ค๋ช
- READ UNCOMMITTED
๋ค๋ฅธ ํธ๋์ญ์ ์ด Commit ์ ์ํ๋ฅผ ๋ณผ ์ ์์
Binary Log๊ฐ ์๋์ผ๋ก Row Based๋ก ๊ธฐ๋ก๋จ (Statement์ค์ ๋ถ๊ฐ, Mixed ์ค์ ์ ์๋ ๋ณํ) - READ-COMMITTED
Commit๋ ๋ด์ญ์ ์ฝ์ ์ ์๋ ์ํ๋ก, ํธ๋์ญ์ ์ด ๋ค๋ฅด๋๋ผ๋ ํน์ ํ ํธ๋์ญ์ ์ด Commit์ ์ํํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ Readํ ์ ์์
Binary Log๊ฐ ์๋์ผ๋ก Row Based๋ก ๊ธฐ๋ก๋จ (Statement์ค์ ๋ถ๊ฐ, Mixed ์ค์ ์ ์๋ ๋ณํ) - REPEATABLE READ (๊ธฐ๋ณธ)
MySQL InnoDB ์คํ ๋ฆฌ์ง ์์ง์ Default Isolation Level
Select ์ ํ์ฌ ๋ฐ์ดํฐ ๋ฒ์ ์ Snapshot์ ๋ง๋ค๊ณ , ๊ทธ Snapshot์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํ
๋ฐ์ดํฐ์ ๊ดํด์ ์๋ฌต์ ์ผ๋ก Lock๊ณผ ๋น์ทํ ํจ๊ณผ๊ฐ ๋ํ๋จ. ์ฆ, Select ์์ ์ด ์ข ๋ฃ๋ ๋๊น์ง ํด๋น ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ๋ถ๊ฐ
๋์ผ ํธ๋์ญ์ ๋ด์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ๊ธฐ ์ํด์๋ ํธ๋์ญ์ ์ ๋ค์ ์์ํด์ผ ํจ - SERIALIZABLE
๊ฐ์ฅ ๋์ Isolation Level๋ก ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง SELECT ๋ฌธ์ฅ์ด ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฐ์ดํฐ์ Shared Lock์ด ๊ฑธ๋ฆผ
๋ค๋ฅธ ํธ๋์ญ์ ์์๋ ํด๋น ์์ญ์ ๊ดํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฟ๋ง ์๋๋ผ ์ ๋ ฅ๋ ๋ถ๊ฐ
๋ณด์ ์ค์
skip-external-locking # ์ธ๋ถ(TCP/IP) ์ ๊ธ ๋นํ์ฑํ
enable-secure-auth # ์๋ฒ๋ก ๊ตฌ๋ฒ์ (4.1๋ฒ์ ์ดํ) ํฌ๋ฉง์ผ๋ก ๋ ํจ์ค์๋ ์ ๋ฌ ๋นํ์ฑํ
symbolic-links = OFF # ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋นํ์ฑํ
Connection ์ค์
thread_handling = one-thread-per-connection # ์ฐ๋ ๋ํ(Thread Pool) ์ฌ์ฉ ์ฌ๋ถ
์ฐ๋ ๋ํ์ ์ฌ์ฉํ๋ ค๋ฉด pool-of-threads ์ผ๋ก ์ค์
max_connections = 250 # ํ์ฉ ๊ฐ๋ฅํ ์ต๋ ๋์ ์ ์์, ๊ฐ๊ฐ์ ์ปค๋ฅ์
์ ์ต์ thread_stack์ ์ฌ์ด์ฆ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
max_connect_errors = 1000 # ๊ณ์์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ฐ์์ํค๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ช๋ฒ์งธ ์ฌ์๋ํ blockํ ์ง ์ง์
ํ๋ฒ block๋๋ฉด, ์๋ฒ๋ฅผ ์ฌ์์ํ๊ฑฐ๋ flush host๋ช
๋ น์ ์คํํ๊ธฐ ์ ๊น์ง ์ ์ ๋ถ๊ฐ
back_log = 100 # max_connections ์ด์์ connection์ด ๋๋์ผ๋ก ๋ชฐ๋ฆด ๋ ํ์ ๋๊ธฐ๊ฐ๋ฅํ ์ปค๋ฅ์
์ ๊ฐฏ์
thread_cache_size = 100 # ์ฌ ์ฌ์ฉ์ ์ํด ๋ณด๊ดํ ์ฐ๋๋ ์, thread_created๊ฐ ๋์ ๊ฒฝ์ฐ ์ฆ๊ฐ๋จ
THREADS_CONNECTED ์ํ๊ฐ์ ํผํฌ๋ณด๋ค ์ฝ๊ฐ ๋ฎ๊ฒ ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅํจ
wait_timeout = 28800 # ์ ์ํ ํ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์ฌ ๋๊น์ง ๋๊ธฐํ๋ ์๊ฐ(์ด) = noninteractive ์ปค๋ฅ์
๋ซ๊ธฐ๊น์ง์ ์๊ฐ
lock_wait_timeout = 28800 # metadata lock์ ํ๋ํ๊ธฐ ์ํด ๋๊ธฐํ๋ ์๊ฐ(์ด), ๊ธฐ๋ณธ์ 1๋
์
interactive_timeout = 3600 # โmysql>โ๊ณผ ๊ฐ์ ์ฝ์์ด๋ ํฐ๋ฏธ๋ ์์์ ํด๋ผ์ด์ธํธ์ ์ ์์ ์๊ฐ(์ด), ๊ธฐ๋ณธ 8์๊ฐ์ด์ง๋ง 1์๊ฐ ์ค์ ๊ถ์ฅ
connect_timeout = 10 # mysqld ๋ฐ๋ชฌ์ด ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์ ์์์ฒญ์ ๋ฐ๋ ๊ฒฝ์ฐ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด)
net_retry_count = 10 # ํต์ ์ด ์๋ชป๋์ด ์คํจํ ๋, ๋ช ๋ฒ๊น์ง ์ฌ์๋ํ ์ง
net_read_timeout = 60 # ์ปค๋ฅ์
์ผ๋ก๋ถํฐ ์ฝ๊ธฐ๊ฐ ์ ๋๋ค๊ณ ํ๋จํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด)
net_write_timeout = 60 # ์ปค๋ฅ์
์ผ๋ก ์ฐ๊ธฐ๊ฐ ์ ๋๋ค๊ณ ํ๋จํ๊ธฐ ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด)
open_files_limit = 3000 # mysql์ด ์คํํ ์ ์๋ file(์ ํํ๋ file descripter)๊ฐ์
๊ฐ๋ฅํ๋ฉด 5000์ผ๋ก ์ค์ ํ๋๋ฐ OS limit์ ๋ฐ๋ผ ์ฌ์กฐ์ ๋ ์ ์๋ค
์ค์ ๋ก๋ ์ด ๊ฐ์ ์ํฅ์ ๋ฐ์ง ์๊ณ , OS์ nofile(open files) ์ ํ์ด ์ ์ฉ๋จ
table_open_cache = 4000 # DB์ ์ฒด์์ ์คํํ ์ ์๋ ํ
์ด๋ธ ๊ฐฏ์
table-definition-cache = 4000 # ์บ์ฑํด ๋์ (.frm ํ์ผ์์ ์ถ์ถํ)ํ
์ด๋ธ ์ ์ ๊ฐฏ์, ํ
์ด๋ธ์ด ๋ง์ผ๋ฉด ํฌ๊ฒ ์ค์
Thread Pool ์ค์ - thread_handling = pool-of-threads ์ผ ๋๋ง ์๋ฏธ ์์
thread_pool_size = 4 # ์ฐ๋ ๋ ๊ทธ๋ฃน ๊ฐฏ์, ๊ธฐ๋ณธ์ CPU ๊ฐฏ์์ ๊ฐ์
(sleep์ด๋ wait ์ํ์ธ ์ฐ๋ ๋ ์ ์ธํ๊ณ ) CPU๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์๋ ์ฐ๋ ๋ ๊ฐฏ์
๋ฆฌ๋
์ค๋ ์ ๋์ค ๊ณ์ด์ผ ๋๋ง ์ฌ์ฉ๋๋ ์ค์
thread_pool_max_threads = 500 # ์ฐ๋ ๋ํ์ ๋ค์ด๊ฐ ์ ์๋ ์ต๋ ์ฐ๋ ๋ ๊ฐฏ์
thread_pool_idle_timeout = 60 # idle ์ํ์ธ ์ฐ๋ ๋๋ฅผ ์ ๋ฆฌํ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์๊ฐ(์ด)
thread_pool_stall_limit = 500 # ์ฐ๋ ๋ ๊ต์ฐฉ ์ํ ๊ฒ์ฌ ๊ฐ๊ฒฉ(๋ฐ๋ฆฌ์ด)
์ฐ๋ ๋ ๊ฐฏ์๊ฐ thread_pool_max_threads์ ๋๋ฌํ๋ฉด ์ฐ๋ ๋๋ ๋ ์ด์ ์์ฑ๋์ง ์๋๋ค.
thread_pool_oversubscribe = 3 # internal ํ๋ผ๋ฏธํฐ๋ก ์์๋ก ์์ ํ์ง ์๋ ๊ฒ์ด ์ข์
thread_pool_size * thread_pool_oversubscribe = DB์์ ๋์์ active๋์ด CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ฐ๋ ๋ ๊ฐฏ์
Connection ๋ฉ๋ชจ๋ฆฌ ์ค์
sort_buffer_size = 256K # (์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋) ์ ๋ ฌ์ ํ์ํ ๋ฒํผ์ ํฌ๊ธฐ, ORDER BY ๋๋ GROUP BY ์ฐ์ฐ ์๋์ ๊ด๋ จ
join_buffer_size = 256K # ์กฐ์ธ์ด ํ
์ด๋ธ์ ํ์ค์บ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฒํผํฌ๊ธฐ, ๋๋ฆฌ๋ธ ํ
์ด๋ธ์ด FULL SCANํ ๋ ์ฌ์ฉ๋จ
read_buffer_size = 256K # ํ
์ด๋ธ ์ค์บ์ ํ์ํ ๋ฒํผํฌ๊ธฐ
read_rnd_buffer_size = 256K # ๋์คํฌ ๊ฒ์์ ํผํ๊ธฐ์ํ ๋๋ค ์ฝ๊ธฐ ๋ฒํผํฌ๊ธฐ, ์ ๋ ฌ ๋์์ด ์ปค์ two pass ์๊ณ ๋ฆฌ์ฆ์ ์ธ ๋๋ง ์ฌ์ฉ
#thread_stack = 256K # ์ฐ๋ ๋ ํ๋์ ์คํ ์ฌ์ด์ฆ (๊ธฐ๋ณธ 64bit ์์คํ ์ ๊ธฐ๋ณธ 256KB)
net_buffer_length = 16K # ํด๋ผ์ด์ธํธ์ ๋ณด๋ด๋ ์ด๊ธฐ ๋ฉ์์ง์ ๋ฐ์ดํธ ์
max_allowed_packet = 16M # ํ ํจํท์ ์ต๋ ํฌ๊ธฐ
group_concat_max_len = 32M # GROUP_CONCAT() ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ด์ฉํ ์ ์๋ ์ต๋ ํฌ๊ธฐ
max_heap_table_size = 32M # MEMORY ํ
์ด๋ธ์ ์ต๋ ํฌ๊ธฐ
tmp_table_size = 1M # ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์์ ํ
์ด๋ธ์ ์ต๋ ํฌ๊ธฐ, ์ด ๊ฐ์ ์ด๊ณผํ๋ฉด ๋์คํฌ์ ์์ ํ
์ด๋ธ์ ์
์ฟผ๋ฆฌ ์บ์ ์ค์
query_cache_size = 32M # ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๊ธฐ ์ํด ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ (DB์ ์ฒด)
query_cache_limit = 2M # ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์ด ๊ฐ๋ณด๋ค ํฌ๋ฉด ์บ์ฑ ์ ํจ (๊ธฐ๋ณธ์ 1M)
query_cache_type = DEMAND # ์ฟผ๋ฆฌ์์ ํํธ๋ก ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ค์ ํ ๊ฒฝ์ฐ์๋ง ์ฟผ๋ฆฌ ์บ์ ์ฌ์ฉ
0 or OFF : ์ฟผ๋ฆฌ ์บ์ ์ฌ์ฉ ์ ํจ, ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ ์ฐ๋ ค๋ฉด query_cache_size๋ 0์ผ๋ก ์ค์ ํด์ผ ํจ
1 or ON : SQL_NO_CACHE๋ฅผ ์ค์ ํ์ง ์์ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํจ
2 or DEMAND : SQL_CACHE๋ก ์ค์ ํ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ง ์บ์ฑํจ
MariaDB ์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ
innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + key_buffer_size + query_cache_size + max_connections * ( read_buffer_size + read_rnd_buffer_size + sort_buffer_size + join_buffer_size + thread_stack + binlog_cache_size)
InnoDB ์ค์
innodb_page_size = 16K
innodb_use_sys_malloc = ON # OS์์ ์ ๊ณต๋๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ธฐ๋ฅ ์ฌ์ฉ ์ฌ๋ถ, ON: InnoDB์์ OS ์์์ ์ฌ์ฉ
InnoDB์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ธฐ๋ฅ๊ณผ OS์์ ์ ๊ณต๋๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฅ ์ค ๋ ํจ์จ์ด ๋์ ์ชฝ์ ์ ํํ ์ ์์
innodb_buffer_pool_size = 512M # InnoDB ์์ง์ผ๋ก ๋ ํ
์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์บ์ํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ํฌ๊ธฐ
์ด๊ธฐ ์์คํ
์ ์ฒด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ 40% ์์ค์ผ๋ก ์ค์ ํ๊ณ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์ฆ๊ฐ
innodb_buffer_pool_instances = 2 # ๋ฒํผํ์ ๊ฐฏ์, ์ ์ ํ ๊ฐฏ์๋ก ๋๋๋ฉด ๋ฎคํ
์ค(mutex) ๊ฒฝํฉ์ด ์ค์ด๋ค์ด DB ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ฌ์ค
๊ฐ๊ฐ์ ๋ฒํผํ์ ๊ฐ๊ฐ์ ํ๋ฌ์ฌ ๋ฆฌ์คํธ ๋ฎคํ
์ค(mutex)๋ฅผ ๊ฐ์ง (์๋ง LRU๋ฆฌ์คํธ๋ ๊ฐ์ง ๋ฏ)
๊ฐ ๋ฒํผํ์ InnoDB ์์ง์ด ์๋์ผ๋ก ์ ์ ํ ๋ฐฐ๋ถํด์ ์ฌ์ฉํจ
innodb_additional_mem_pool_size = 16M # DEPRECATED๋จ, ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ์ ๋ณด์ ๋ด๋ถ ๋ฐ์ดํ ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ ํฌ๊ธฐ
innodb_data_file_path=ibdata1:32M;ibdata2:32M:autoextend # ์์คํ
ํ
์ด๋ธ์คํ์ด์ค - ํ์ผ๋ช
:์ด๊ธฐํฌ๊ธฐ:์๋์ฆ๊ฐ:์ต๋ํฌ๊ธฐ
innodb_file_per_table = 1 # ํ
์ด๋ธ ๋จ์๋ก ํ
์ด๋ธ์คํ์ด์ค ํ ๋น, ํ์ฑ์ ํ
์ด๋ธ๋ณ๋ก .frm, .ibd ๊ฐ๊ฐ ์์ฑ
innodb_data_home_dir = /data001/mysvc01/MARIASVC # ํ
์ด๋ธ ์์ฑ ๊ธฐ๋ณธ ๊ฒฝ๋ก
innodb_autoextend_increment = 100 # ํ
์ด๋ธ์คํ์ด์ค ์๋ ํ์ ์ ํฌ๊ธฐ
innodb_log_buffer_size = 4M # ๋ก๊ทธ(redo) ๋ฒํผ ํฌ๊ธฐ
ํด์๋ก ๋์คํฌ ์ฌ์ฉ๋์ด ์ค์ด์ ์ฑ๋ฅ์ด ํฅ์๋์ง๋ง ์์คํ
๋ค์ด์ ์์ค๋๋ ํธ๋์ญ์
์๋ ์ฆ๊ฐ๋จ
ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ๋ก๊ทธ๋ฒํผ๋ฅผ ๋ก๊ทธํ์ผ๋ก ์ฐ๊ธฐ ์ํ ๋ถํ๊ฐ ๋ง์ด ๋ฐ์ํ ์๋ ์์
innodb_log_group_home_dir = /data001/mysvc01/MARIASVC # ๋ก๊ทธ(redo) ๊ฒฝ๋ก
innodb_log_files_in_group = 3 # ๋ก๊ทธ(redo) ํ์ผ ๊ฐฏ์
innodb_log_file_size = 64M # ๋ก๊ทธ(redo) ํ์ผ ํฌ๊ธฐ
์ผ๋ฐ์ ์ผ๋ก (innodb_buffer_pool_size/innodb_log_files_in_group)๋ฅผ ์ ์ ๊ฐ์ผ๋ก ๋ณธ๋ค.
innodb-support-xa = OFF # ํธ๋ ์ ์
two-phase commit ์ง์, ๋์คํฌ ํ๋ฌ์ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅํญ์
๋ถ์ฐ๋ฐ์ดํฐ ๊ธฐ๋ฅ (2-PhaseCommit)
innodb_buffer_pool_dump_at_shutdown = 1 # DB shutdownํ ๋ innodb_log_buffer์ ์๋ ๋ด์ฉ์ dump ํ์ผ๋ก ๋ด๋ฆผ
innodb_buffer_pool_filename = innodb_buffer_pool_dump # DB shutdownํ ๋ innodb_log_buffer์ ์๋ ๋ด์ฉ์ ๋ด์ dump ํ์ผ๋ช
innodb_buffer_pool_load_at_startup = 1 # DB startupํ ๋ dumpํ์ผ๋ก ๋ฐ์ ๋จ๋ ๋ด์ฉ์ innodb_log_buffer์ ์ฌ๋ฆผ
innodb_thread_concurrency = 4 # InnoDB๊ฐ ๋์ ์ฌ์ฉ๊ฐ๋ฅํ ์ต๋ ์์คํ
์ฐ๋๋ ์
CPU์ 2~4๋ฐฐ ๊ถ์ฅ, 0์ผ๋ก ์ค์ ํ๋ฉด ๋์์ฑ์ด ๋นํ์ฑํ ๋จ
innodb_thread_sleep_delay=0 # InnoDB queue์ ๋ค์ด๊ฐ๊ธฐ์ ์ ์ผ๋ง๋ sleepํ ๊ฒ์ธ๊ฐ
innodb_thread_concurency์ ๋๋ฌํ๋ฉด ์๋ก์ด ์ฐ๋ ๋๋ innodb_thread_sleep_delay ๋์ Sleep ํจ
innodb_thread_concurency = 0 ์ด๋ฉด ์ด ๊ฐ์ ๋ฌด์๋จ
innodb_adaptive_max_sleep_delay = 150000 # 0 ์ด์์ ๊ฐ์ผ๋ก ์ง์ ํ๋ฉด, InnoDB๊ฐ innodb_thread_sleep_delay๋ฅผ ์๋์ผ๋ก ์กฐ์
innodb_concurrency_tickets = 500 # ํ๋ฒ ์ค์ผ์ค๋ง๋ ์ฐ๋ ๋๋ ์ค์ ๋ ํฐ์ผ๊ฐ์๋งํผ ์์ ๋กญ๊ฒ InnoDB๋ฅผ ์ฌ์ฉํ ์ ์๋ค
์ฌ๋ฌ ์ฐ๋ ๋๊ฐ innodb_thread_concurrency์ ๋๋ฌํ๋ฉด ํ๋์ ์ฐ๋ ๋๋ง ํ์ ๋ค์ด๊ฐ ์ ์์
ํ๋์ ์ฐ๋ ๋๊ฐ InnoDB์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด, innodb_concurrency_tickets์ ๊ฐ๊ณผ ์ผ์นํ๋ โ์์ ํฐ์ผโ์ ์ซ์๊ฐ ์ฃผ์ด์ง๊ณ , ์ฐ๋ ๋๊ฐ ์์ ์ ํฐ์ผ์ ์ฌ์ฉํ๊ธฐ ์ ๊น์ง๋ ์์ ๋กญ๊ฒ InnoDB์ ๋ค์ด๊ฐ๊ณ ๋์ฌ ์๊ฐ ์๋ค.
์ด๋ฐ ํ์๋, ์ฐ๋ ๋๋ ๋ค์๊ธ ์ผ๊ด์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ณ InnoDB์ ๋ค์ ๋ค์ด๊ฐ๋ ค๊ณ ์๋ํ๊ฒ ๋๋ค
InnoDB๋ IO request๋ฅผ background threads์ ๊ฐ๋ฅํํ ๋๋ฑํ๊ฒ ๋ถ๋ฐฐํ๊ณ , ๋์ผํ extent์ ๋ํ read requests๋ ๋์ผํ thread์๊ฒ ํ ๋นํจ
innodb_read_io_threads = 4 # InnoDB ์ฝ๊ธฐ ์์
์ ์ํ I/O ์ฐ๋ ๋์ ์, ์ฃผ๋ชฉ์ : read-ahead requests
SHOW ENGINE INNODB STATUS ์์ pending read requests๊ฐ 64 x innodb_read_io_threads์ด์์ด๋ผ๋ฉด, innodb_read_io_threads๋ฅผ ๋ ํ ๋นํ๋ ๊ฒ์ ๊ณ ๋ ค
innodb_write_io_threads = 4 # InnoDB ์ฐ๊ธฐ ์์
์ ์ํ I/O ์ฐ๋ ๋์ ์
read-ahead ๋?
ํ๋์ extent(64๊ฐ pages group)์ ๋ชจ๋ buffer pool์ prefetchํ๋ ์์
. (asynchronous request์)
์ด๋ค ํ์ด์ง๋ ๊ณง ์ฝํ์ง๊ฑฐ๋ผ๋ ๊ฐ์ ํ์ ๋ชจ๋ ๋ฒํผ์ ์ฌ๋ฆฌ๋ ๊ฒ
- ์๊ณ ๋ฆฌ์ฆ
linear read-ahead technique: ๋ฒํผํ ์์ ์์ฐจ์ ์ผ๋ก ์ฝํ์ง ํ์ด์ง ๊ฐ์๋ก ํ๋จ
๋ง์ฝ ํ๋์ extent๋ด์์ ์์ฐจ์ ์ผ๋ก ์ฝํ์ง ํ์ด์ง ๊ฐ์๊ฐ innodb_read_ahead_threshold ์ด์์ด๋ฉด ๋ค์ extent์ ์ฒด ํ์ด์ง๋ฅผ read-ahead
random read-ahead technique: ๋ฒํผํ ์์ ์กด์ฌํ๋ ํ์ด์ง ๊ฐ์๋ก ํ๋จ(์์ฐจ์ ์ธ์ง ์ฌ๋ถ์ ๋ฌด๊ดํจ)
๋ง์ฝ ํ extent๋ด์ 13๊ฐ์ ์ฐ์๋ ํ์ด์ง๊ฐ ๋ฒํผํ์ ์กด์ฌํ๋ค๋ฉด, ํด๋น extent์ ๋๋จธ์ง pages๋ค์ read-aheadํ๋ค
innodb_lock_wait_timeout = 1200 # ํธ๋์ญ์ ๋ฝ(record lock)์ ๋๊ธฐํ๋ ์๊ฐ(์ด)
innodb_flush_neighbors = 1 # InnoDB ๋ฒํผํ์์ ํ์ด์ง ํ๋ฌ์๋ฅผ ํ ๋(=๋์คํฌ๋ก ๊ธฐ๋กํ ๋), ์ธ์ ํ ๋ํฐ ํ์ด์ง๋ (๋จ์ผ I/O๋ก) ํ๋ฌ์ํ ์ง ๊ฒฐ์ ํ๋ ๋ณ์
๋๋ค์ก์ธ์ค ์ฐ๊ธฐ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ HDD์์๋ ์ข์ผ๋, SSD์์๋ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํจ
0: ํด์ , 1: ๊ฐ์ extent์์ ์ฐ์๋ ๋ํฐ ํ์ด์ง๋ฅผ ๊ฐ์ด ํ๋ฌ์ํจ, 2: ๊ฐ์ extent์์ ๋ชจ๋ ๋ํฐ ํ์ด์ง๋ฅผ ํ๋ฌ์ํจ
innodb_io_capacity = 100 # ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ฌ์ฑ ์๋ ์ ์ด๋ฅผ ์ํ ๋ณ์, ํฐ ๊ฐ์ ์ง์ ํ๋ฉด I/O ๋์ญํญ์ ์ ์ ํ๋ฏ๋ก ํ๊ฒฝ์ ๋ง์ถฐ์ ์ค์ ํ ๊ฒ
InnoDB ๋ฉ์ธ ์ฐ๋ ๋๊ฐ I/O ์์
์ ํ ์ ์๋ capa, ์์คํ
์ I/O ์์ค์ ์์กด์ ์
์ผ๋ฐ์ ์ผ๋ก 7200 RPMs ํ๋ ๋๋ผ์ด๋ธ์ธ ๊ฒฝ์ฐ 100์ผ๋ก ์ค์
RAID ๊ตฌ์ฑ์ด๋ SSD ์ฌ์ฉ ๋ฑ์ ๋ฐ๋ผ์ ๋ ๋์ ๊ฐ์ผ๋ก ์ค์
Raid1: 200. Raid10: 200 x write arrays. SSD: 5000. FusionIO: 20000
innodb_flush_log_at_trx_commit = 0 # InnoDB์์ ์ปค๋ฐ๋ ๋๋ง๋ค ๋ก๊ทธ(redo)๋ฅผ ๋์คํฌ์ ํ๋ฌ์ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ต์
fsync() ํจ์๋ฅผ ํธ์ถํ๋ ๋น๋์ ๊ดํ ์ต์
0 : ์ปค๋ฐ๋ ๋๋ง๋ค ๋์คํฌ ํ๋ฌ์๋ฅผ ํ์ง๋ ์์, OS์์ ์ ์ ํ ์์ (์ผ๋ฐ์ ์ผ๋ก 4~5์ด ๊ฐ๊ฒฉ)๋ง๋ค ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋จ
์ ๋ชป ๋๋ฉด 4~5์ด๊ฐ์ ๋ฐ์ดํฐ๋ ์ ์ค๋ ์๋ ์์
1 : ํธ๋์ญ์
์ด ์ปค๋ฐ๋ ๋๋ง๋ค ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋๊ณ ๋์คํฌ ํ๋ฌ์๊ฐ ์คํ (๊ฐ์ฅ ์์ , ๊ฐ์ฅ ๋๋ฆผ)
2 : ์ปค๋ฐ๋๋ฉด ๊ฐ์ ๋ก ๋ก๊ทธ ๋ฒํผ๋ฅผ ๋ก๊ทธ ํ์ผ์ ์ฐ์ง๋ง, 1์ด๊ฐ ์ง๋๊ธฐ ์ ์๋ ๋์คํฌ์ ์ ์ฅ๋์ง ์์
innodb_flush_method = O_DIRECT
InnoDB๊ฐ dafa files, log files๋ก data๋ฅผ flush(๋์คํฌ์ ๊ธฐ๋กํ๊ณ ๋๊ธฐํํ๋ ์์
)ํ๋ ๋ฐฉ๋ฒ
โโโโโโ+โโโ-+โโโ-+โโโโ+โโโโโโ+โโ
Method | log file | log file | data file | data file flush | ์ค๋ช
Method | open | fulsh | open | data file flush | ์ค๋ช
โโโโโโ+โโโ-+โโโ-+โโโโ+โโโโโโ+โโ
fsync | normal | fsync() | normal | fsync() | ๊ธฐ๋ณธ
O_DSYNC | O_SYNC | O_SYNC | normal | fsync() | synchronized(๋๊ธฐ) I/O๋ก์, write์์
์ hardware๋จ๊น์ง fsyncํจ
O_DIRECT | normal | fsync() | O_DIRECT | fsync() | OS caching์ ํ์ง ์๊ณ direct I/O๋ก innodb_buffer_pool์์ file๋ก I/Oํจ
O_DIRECT_NO_FSYNC | normal | fsync() | O_DIRECT | skip fsync() | O_DIRECT์ ๋์ผํ๋ฐ data file ๋๊ธฐํ๋ฅผ ์ํ fsync ํธ์ถ์ ์๋ตํจ
โโโโโโ+โโโ-+โโโ-+โโโโ+โโโโโโ+โโ
fsync = ๋ฐ์ดํฐ์ ๋ฉํ์ ๋ณด๋ฅผ ํจ๊ป ๋ณ๊ฒฝํ๋ ๋ฐฉ์ (ํ์ผ๋ฉํ์ ๋ณด๋ ํ์ผ๋ณ๊ฒฝ์ผ์,์์ ์ ๋ฑ์ ์๋ฏธํจ, fdatasync โ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝ, ๋ฉํ๋ฐ์ดํฐ๋ ๋ฌด์โ)
O_DIRECT = pache cache, buffer cache๋ directlyํ๊ฒ write bypassํ์ง๋ง, inode cache, directory cache, metadata๋ ๋ฐ๋ก fsync()๋ฅผ ํธ์ถํด์ flush ํด์ค์ผ ํจ
(์บ์๋ฉ๋ชจ๋ฆฌ ์ฅ์ฐฉ๋)RAID ์ปจํธ๋กค๋ฌ๊ฐ ์๊ฑฐ๋ SAN์ ์ฌ์ฉํ ๋๋ O_DIRECT๋ฅผ ์ฌ์ฉ ํ์ง ์๋ ๊ฒ์ด ์ข์
double buffering(InnoDB buffer pool๊ณผ OS file system cache์ ๋๋ฒ ์บ์ฌ)์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅํฅ์์ ๊ธฐ๋ํ ์ ์๋ค.
O_DIRECT_NO_FSYNC = ๋ช๋ช file system์์๋ O_DIRECT๊ฐ fsync()์์ด๋ metadata๊น์ง synchronize๋๋ ๊ฑธ ๋ณด์ฅํจ. ๊ทธ๋์ InnoDB๊ฐ O_DIRECT_NO_FSYNC๋ฅผ ์ถ๊ฐํจ
๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ = 1๋จ๊ณ โ์ด์์ฒด๋ก์ ๋ฒํผ๋ก ๊ธฐ๋กโ + 2๋จ๊ณ โ๋ฒํผ์ ๋ด์ฉ์ ๋์คํฌ๋ก ๋ณต์ฌโ
- ๋๊ธฐ(Sync) I/O = 1๋จ๊ณ์ 2๋จ๊ณ๋ฅผ ํจ๊ป ์คํ
- ๋น๋๊ธฐ(Async) I/O = 1๋จ๊ณ์ 2๋จ๊ณ๋ฅผ ๋ค๋ฅธ ์์ ์ ์คํ
- direct I/O = 1๋จ๊ณ ๋ฌด์, 2๋จ๊ณ โ๋ฒํผ์ ๋ด์ฉ์ ๋์คํฌ๋ก ๋ณต์ฌโ๋ง ์คํ
innodb_adaptive_hash_index = ON
Adaptive Hase Index
- workload์ ์ถฉ๋ถํ buffer pool memory์ ์ ์ ํ ์กฐํฉํ์์, ํธ๋์ญ์ ํน์ฑ์ด๋ ์ ๋ขฐ์ฑ์ ์๋ฐฐ๋์ง ์๋ ์ ์์, InnoDB๋ฅผ in-memory DB์ฒ๋ผ ๋์ํ๊ฒ ํจ
- ๋์
1) MySQL์ search ํจํด์ ๊ณ ๋ คํ์ฌ index prefix(์ธ๋ฑ์ค ํค์ ๊ฐ ์๋ถ๋ถ)๋ก hash index๋ฅผ ๋ง๋ ๋ค
2) ์์ฃผ access๋๋ ์ธ๋ฑ์ค ํ์ด์ง์ ๋ํด์๋ง ๋ถ๋ถ์ ์ผ๋ก ์์ฑ๋ ์๋ ์๋ค.
3) InnoDB๋ index search ํจํด์ ๋ชจ๋ํฐ๋งํ๋ ๋ฉ์ปค๋์ฆ์ ๊ฐ์ง๊ณ ์์ด์ ํด๋น ์ฟผ๋ฆฌ๊ฐ hash index๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ต์ด๋ผ๊ณ ํ๋จ๋๋ฉด, ์๋์ผ๋ก hash index๋ฅผ ์์ฑํ๋ค
4) ๋ง์ฝ ํ ์ด๋ธ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ์ ์๋ ์ฌ์ด์ฆ์ธ ๊ฒฝ์ฐ, hash index๋ ์ฟผ๋ฆฌ ์๋๋ฅผ ํฅ์์ํจ๋ค.
์ธ๋ฑ์ค๋ฅผ pointer์ ๊ฐ์ด ๋์ํ๊ฒ ํด์ ์ํ๋ ๋ก์ฐ๋ฅผ ๋ฐ๋ก ๋ค์ด๋ ํธํ๊ฒ ์ฐพ์์ ์๋ค.
5) ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ํด์๋ฅผ ํตํด์ ์ง์ ์ ๊ทผํ ์ ์๊ธฐ์, Mutex Lock์ผ๋ก ์ธํ ์ง์ฐ์ ํ์ฐํ๊ฒ ์ค์ด๋ฆ
6) heavy workloadํ์์๋(๋์ ๋๋ ๋ฐฐ์น ์์ ๋ฑ), adaptive has index๋ฅผ ์ ๊ทผํ ๋ ํ๋ํ๋ read/write lock์ด contention์ ์์ธ์ด ๋๊ธฐ๋ ํ๋ค
7) LIKE % ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ์๋ Adaptive Hase Index๊ฐ ๋ณ ์ด๋์ด ์ ๋๋ค - ๋ชจ๋ํฐ๋ง
1) ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ๋ Innodb_Buffer_Pool_Size์ 1/64๋งํผ์ผ๋ก ์ด๊ธฐํ(์ต์๊ฐ ๊ทธ๋ ๊ณ ์ต๋๋ ์ ์ ์์)
์ง๋์น๊ฒ ์ปค์ง์ง ์๋๋ก ์ํ์ ์ฃผ๊ธฐ์ ํ์ธ ํ์ (SHOW GLOBAL STATUS LIKE โInnodb%adaptive%โ;)
2) SHOW ENGINE INNODB STATUS ์์ SEMAPHORE ์น์ ์ RW-latch๋ฅผ ๋๊ธฐํ๋ thread๊ฐ ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด, disableํ๋ ๊ฒ์ด ๋ ์ข์ ์๋ ์๋ค.
3) ํ ์ด๋ธ DROP์ ์ต๋ํ ํธ๋ํฝ์ด ์๋ ์๋ฒฝ์, Adaptive Hash Index๋ฅผ ์๊ฐ OFF/ON์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ณ , ํ ์ด๋ธ์ DROPํ๋ ๊ฒ์ด ์ข๋ค.
innodb_adaptive_hash_index_partitions = 2
adaptive_hash_index๋ฅผ ๋ช ๊ฐ๋ก ๋๋ ์ธ์ง ๊ฒฐ์ ํ๋ ๋ณ์
๊ธฐ๋ณธ์ 1 ์ด๋ฉฐ, 1์ผ ๋๋ ๋จ์ผ Mutex๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ์ DROPํ๊ฒ ๋๋ฉด adaptive_hash_index์์ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ฉด์ adaptive_hash_index ๋์ ๋ณด๋ ์ฟผ๋ฆฌ๋ค๊น์ง ์ํฅ์ ๋ฐ์ ์ ์์
๋ณ์๊ฐ์ ํฌ๊ฒ ์ค์ ํ๋ฉด Mutex๊ฐ ์ฌ๋ฌ ๊ฐ๊ฐ ๋๋ฉด์ ํ
์ด๋ธ์ DROPํ ๋ adaptive_hash_index์์ Mutex ๊ฒฝํฉ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์์
InnoDB ๋ด๋ถ์ ์ผ๋ก๋ ํ
์ด๋ธ DROP์ Sleep์์ด ์ฃฝ์ผ๋ผ๊ณ Hash Index์์ ๊ด๋ จ ๋
ธ๋๋ฅผ ๋ชจ๋ ์ญ์ ํ ํ ํ
์ด๋ธ์ด ์ ๊ฑฐ
๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก๋ CPU ๊ฐ์ ์ ๋๋ฉด ์ ๋นํ ๋ฏ ํจ
innodb_change_buffering = all # change buffering ์ค์
change buffering = insert buffering + delete buffering + purge buffering
all : ๊ธฐ๋ณธ: buffer inserts, delete-marking operations, and purges.
none : Do not buffer any operations.
inserts : Buffer insert operations.
deletes : Buffer delete-marking operations.
changes : Buffer both inserts and delete-marking.
purges : Buffer the physical deletion operations that happen in the background.
Innodb๋ ์ธ๋ฑ์ค leaf node๋ฅผ ์
๋ฐ์ดํธํ์ง ์๊ณ buffer๋ง ํด๋ , ๋ฒํผ์ ์์๋ก ์ ์ฅํด ๋๊ณ ๋์ค์ ์ฌ์ ๊ฐ ๋ ๋ ์ค์ ์ธ๋ฑ์ค์ ๋ณํฉํจ
secondary index์ leaf node๋ฅผ updateํ๋ ค๋ฉด, ๋์คํฌ๋ก๋ถํฐ index page๋ฅผ ์ฝ์ด์ ๋ณ๊ฒฝํด์ผํ๋๋ฐ ์ด๋ ๋ถ์์ ์ผ๋ก ์ถ๊ฐ IO๊ฐ ํ์ํ ์์
์ด๊ธฐ ๋๋ฌธ
์ ์ฅ: change buffer๋ system tablespace์ ์์นํจ
์กฐ๊ฑด: non-uniqueํ ์ธ๋ฑ์ค์ ๋ํ ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ, ๋ณ๊ฒฝ์์
์ ํด๋นํ๋ page๊ฐ buffer pool์ ์กด์ฌํ์ง ์์๋๋ง change buffer์ ๋ณ๊ฒฝ์ ์ ์ฅ
merge ์์
)
background thread์ ์ํ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณํฉ
ํด๋น page๊ฐ ๋ค๋ฅธ read operation์ ์ํด์ buffer pool๋ก ๋ถ๋ ค์ฝํ์ก์ ๋
innodb_change_buffer_max_size=25 # ๋ฒํผํ์์ change_buffer๊ฐ ์ฐจ์งํ ๋น์จ
innodb_old_blocks_pct = 37 # LRU ๋ฆฌ์คํธ ์์ญ์ ๋ฒ์(ํผ์ผํธ)
innodb_old_blocks_time = 1000 # LRU ๋ฆฌ์คํธ์์ MRU ๋ฆฌ์คํธ๋ก ์ฎ๊ธฐ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์๊ฐ(๋ฐ๋ฆฌ์ด)
MRU: Most Recently used list, LRU: Last Recently used list
๋ฒํผํ์ ํ์ด์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฆฌ์คํธ = MRU ๋ฆฌ์คํธ + LRU ๋ฆฌ์คํธ
innodb_autoinc_lock_mode = 1
auto_increment ์นผ๋ผ์ ๋ค์ด๊ฐ ๊ฐ์ ์ํ lock ์ค์
0 : insert ํ ๋ ๋ง๋ค auto increment lock ์ฌ์ฉ, insert โฆ select โฆ ์ฒ๋ผ ๋๋ ๋ฐ์ดํฐ ์
๋ ฅํ ๋๋ lock ๋๊ธฐ๊ฐ ๊ธธ์ด์ง
1 : insert โฆ select โฆ ์ฒ๋ผ ๋๋ ๋ฐ์ดํฐ ์
๋ ฅํ ๋ ๋ฏธ๋ฆฌ ์ผ์ ๋์ ์๋ ์ฆ๊ฐ๊ฐ์ ๋ง๋ค์ด ์ฌ์ฉ
๋ฏธ๋ฆฌ ๋ง๋ ์ผ์ ๋์ ์๋ ์ฆ๊ฐ๊ฐ์ด ๋ค ์ฌ์ฉ๋์ง ์์ผ๋ฉด ๋๋จธ์ง๋ ๋ฒ๋ฆผ
2: auto increment lock์ ์ฌ์ฉํ์ง ์๊ณ mutex ์ฌ์ฉ, auto_increment ๊ฐ์ด ์ ๋ํฌํจ์ ๋ณด์ฅํ์ง๋ง ์์๋ ๋ณด์ฅํ์ง ๋ชป ํจ
innodb_max_dirty_pages_pct=75 # ๋ฒํผํ์ ๋จ์ ์์ ์ ์๋ ๋ํฐ ํ์ด์ง์ ๋น์จ (์ด ๋น์จ์ด ๋์ด๊ฐ๋ฉด ์ฒดํฌํฌ์ธํธ๊ฐ ์ํ๋จ)
๋ํฐํ์ด์ง(dirty page) = SQL ์กฐ์์ผ๋ก ๋ณ๊ฒฝ๋์ง๋ง ์์ง ๋์คํฌ์ ์ฐ์ฌ์ง์ง ์์ ๋ฐ์ดํฐ ํ์ด์ง
innodb_adaptive_flushing=ON # InnoDB ์์ง์ด ๋ฆฌ๋ ๋ก๊ทธ์ ๋ฐ์๋์ ๋ชจ๋ํฐ๋ง ํ๋ฉด์ ๋ฒํผ ํ์ ๋ํฐํ์ด์ง๋ฅผ ๋์คํฌ๋ก ์ฐ๋ ์์
์๋๋ฅผ ์กฐ์ ํ๊ฒ ํจ
ON ์ด ์๋๋ฉด ๋ํฐํ์ด์ง์ ๋น์จ์ด innodb_max_dirty_pages_pct๋ฅผ ๋์ด์๋ ์๊ฐ ๊ณต๊ฒฉ์ ์ธ ๋์คํฌ ์ฐ๊ธฐ ์ผ์ด๋ ์ ์์
innodb_use_native_aio=ON # ๋ฆฌ๋
์ค์ ์๋์ฐ ํ๋ซํผ์ ํํด ๋ค์ดํฐ๋ธ ๋น๋๊ธฐ I/O ๋ฐฉ์์ด ์ ๊ณต๋จ (I/O์์ฒญ ๋์์ฑ ์ฆ๋ ํจ๊ณผ)
libaio ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์๊ณ , ์ด ๊ฐ์ โONโ์ผ๋ก ์ค์ ํด์ผ ์ฌ์ฉ ๊ฐ๋ฅํจ
innodb_doublewrite = 1 # doublewrite buffer์ data file์ ์ด์ค ์ฐ๊ธฐ ํ์ฑํ (๊ธฐ๋ณธ: ํ์ฑ)
๋ชฉ์ : ์์คํ
crash, ์ ์๊ณต๊ธ์ค๋จ ๋ฑ ์ฅ์ ์ ๋ณด๋ค ์์ ํ ๋ฆฌ์ปค๋ฒ๋ฆฌ
OS์ ๊ธฐ๋ณธIO ๋จ์(๋ณดํต 4K)์ DB์ ๊ธฐ๋ณธIO๋จ์(๋ณดํต 16K)๊ฐ ๋ค๋ฆ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ page currupt๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ
(16K๊ฐ OS๋ฅผ ํตํด ๋ค ์จ์ง๊ธฐ ์ ์ ์์คํ
crash๊ฐ ๊ฐ ๋๋, ์์ ํ๊ฒ ๋ณต๊ตฌํ ์ ์๋๋ก ๋์์ค)
InnoDB๋ full pages๋ฅผ ๋ก๊น
ํ์ง๋ ์์ผ๋ฏ๋ก ํ์ํจ
InnoDB๋ log file์ page number, ๋ณ๊ฒฝ๋ด์ฉ, log sequence ์ ๋ณด๋ฅผ ๊ธฐ๋กํจ
Doublewrite Buffer ๋?
- ๊ธฐ๋ณธ์ ์ผ๋ก system tablespace์ ์์นํจ
- Flush ์ด๋ฒคํธ ๋ฐ์์ Doublewrite Buffer๋ฅผ ๋จผ์ ์ฐ๊ณ , ๊ทธ ๋ค์์ ๋์ ํ์ด์ง์ ๋ด์ฉ์ ๋ณ๊ฒฝํจ
(๋์ ํ์ด์ง์ ๋ณ๊ฒฝ ์์ ์ fsync()๋ฅผ callํด์ ์งํ๋จ) - Doublewrite Buffer์ ๊ธฐ๋ก๋๋ ๋ด์ฉ์ ํด๋น ํ์ด์ง ์ ๋ณด์ operation ์ ๋ณด์
- ์ฌ๋ฌ ๊ฐ์ dirty page๋ฅผ ๊ฐ๊ฐ์ ๋ฐ์ดํฐํ์ผ์ ํ๋ฌ์ฌํ๋ ค๋ฉด ๋๋คI/O๊ฐ ๋ฐ์ํ์ฌ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก dirty page๋ฅผ ๋ชจ์์ ์์คํ ํ ์ด๋ธ์คํ์ด์ค ๋ด ํ๋์ ์ฐ์์ ์ธ extent์ ์ฐ๊ณ ๋จ์ผ I/O๋ก ์ฒ๋ฆฌ
- fsync() ํ์ ์ค์ - ๋งค page๋ง๋ค fsync()๋ฅผ ์ฝํ๋๊ฒ ์๋๋ผ, multiple page๋ฅผ ํ๋ฒ์ ์ฐ๊ณ fsync()
- ์ผ๋ฐ์ ์ผ๋ก doublewrite๋ฅผ ํ์ฑํ์ ์ํด์ ๋ฐ์ํ๋ ์ฑ๋ฅ ์ ํ๋ 5% ์ ๋๋ก ๋ณธ๋ค.
innodb_sync_spin_loops = 30 # ์ฐ๋ ๋๊ฐ ์ง์ฐ๋๊ธฐ ์ ์ (suspended) ํ์ด ์ฃผ๊ธฐ ์ํด InnoDB ๋ฎคํ
์ค(mutex)๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฐ๋ ๋์ ๋๊ธฐ ์๊ฐ
spin loop: CPU๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฝ์ด ํด์ ๋๋์ง ๊ฒ์ฌํ๋ ๊ฒ
๋์ผํ ์ฟผ๋ฆฌ๊ฐ ๋์๋ค๋ฐ์ ์ผ๋ก ์ ์
๋์ด ์ฌ๋ฌ ์ค๋ ๋์์ ๋ฉ๋ชจ๋ฆฌ๋ด์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ๊ทผํ์ฌ ๋ฎคํ
์ค ๊ฒฝํฉ์ด ๋ฐ์, CPU ๋ถํ๊ฐ ๋์์ง๋ ๊ฒฝ์ฐ์๋ ์ด ๊ฐ์ ์ค์ฌ๊ฐ๋ฉด ๋ถํ๊ฐ ์ค์ด๋ค ์๋ ์์ (10์ ๋๊น์ง๋ ๊ด์ฐฎ์ ๋ฏ)
innodb_table_locks = 1 # LOCK TABLES์ AUTOCOMMIT=0๊ฒฝ์ฐ์, InnoDB๋ก ํ์ฌ๊ธ ๋ด๋ถ์ ์ผ๋ก ํ
์ด๋ธ์ ์ ๊ธ
innodb_max_purge_lag = 0 # ํผ์ง ์ฐ์ฐ (purge operation)์ด ๋๊น
(lagging)๋ ๋ INSERT, UPDATE ๋ฐ DELETE ์ฐ์ฐ์ ์ง์ฐ ์ํค๋ ๋ฐฉ๋ฒ์ ์ ์ด
๋ํดํธ๊ฐ 0์ผ์ ์ง์ฐ ์์
innodb_commit_concurrency = 0 # ๋์์ commit ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ์ฐ๋ ๋์ ์ซ์. ๊ฐ์ด 0์ด ๋๋ฉด ๋์์ฑ ์ ์ด(concurrency control)๊ฐ ๋นํ์ฑํ
innodb_purge_threads = 1 # purge ์์
์ ์คํํ ์ฐ๋ ๋์ ์ (๊ธฐ๋ณธ1~์ต๋32)
InnoDB์ purge ์์
์์ ) ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋๋ ๊ฐ๋น์ง ์ปฌ๋ ์
์์
์ ํ ์ข
๋ฅ, ๋ง์คํฐ ์ฐ๋ ๋์ ์ํด ๋์๋จ, purgeํ๋ ๋์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
๋ค์ ๋๊ธฐํด์ผ ํจ
MySQL 5.5์ดํ) ๊ฐ๋ณ์ ์ฐ๋ ๋์์ ์ํ๋๋ฉด์ ๋ ๋์ ๋์์ฑ ๋ณด์ฅ
innodb_file_format = barracuda # InnoDB ํ์ผ ํฌ๋ฉง: ํ
์ด๋ธ์์ถ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด barracuda ์ฌ์ฉ
innodb_file_format_max = barracuda
innodb_large_prefix = ON # ์ธ๋ฑ์ค ํค ์นผ๋ผ์ prefix๋ฅผ 767 bytes ์ด์์ผ๋ก ์ค์ (์ต๋ 3072 bytes๊น์ง ์ค์ ๊ฐ๋ฅ)
innodb_open_files = 4000 # DB์ ์ฒด์์ ๋์์ ์ด์ด ๋์ ์ ์๋ InnoDB ํ
์ด๋ธ์ .ibd ํ์ผ์ ์
innodb_stats_persistent = 1 (ON) # ํต๊ณ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก mysql.innodb_table_stats, mysql.innodb_index_stats ํ
์ด๋ธ์ ์๊ตฌํ ์ ์ฅ
innodb_stats_auto_recalc = 1 (ON) # ์ฃผ๊ธฐ์ ์ผ๋ก ํต๊ณ ์ ๋ณด๋ฅผ ๊ฐฑ์
innodb_stats_persistent_sample_pages = 20 # mysql.innodb_table_stats, mysql.innodb_index_stats ํ
์ด๋ธ์ ์๊ตฌํ ์ ์ฅํ ํต๊ณ์ ๋ณด ์์ง์ ์ฌ์ฉํ ์ํ ํ์ด์ง ์
innodb_stats_sample_pages = 8 # ํต๊ณ์ ๋ณด ์์ง์ ์ฌ์ฉํ ์ํ ํ์ด์ง ์
innodb_stats_on_metadata = OFF # ๋ค์ ๋ช
๋ น๋ค์ด ์คํ๋ ๋ ํต๊ณ ์ ๋ณด ๊ฐฑ์ ํ์ฑํ
SHOW TABLE STATUS, SHOW INDEX, INFORMATION_SCHEMA.TABLES ์กฐํ, INFORMATION_SCHEMA.STATISTICS ์กฐํ
innodb_show_verbose_locks = 1 # โSHOW ENGINE INNODB STATUSโ์ ๋ฝ์ด ์กํ ๋ ์ฝ๋ ํ์
innodb_print_all_deadlocks = ON # ์๋ฌ ๋ก๊ทธ์ InnoDB ๋ฐ๋๋ฝ ์ ๋ณด ๊ธฐ๋ก ํ์ฑํ
innodb_status_output = ON; # ์๋ฌ ๋ก๊ทธ์ โSHOW ENGINE INNODB STATUSโ ๊ฒฐ๊ณผ ํฌํจ ์ค์
innodb_status_output_locks = ON # InnoDB Status๋ฅผ ๋ณด๋ ๋ถ๋ถ(โSHOW ENGINE INNODB STATUSโ ํน์ ์๋ฌ๋ก๊ทธ)์ lock ์ ๋ณด๋ ํจ๊ป ํ์๋๋๋ก ํจ
innodb_force_recovery = 0
ํฌ๋์ ๋ณต๊ตฌ ๋ชจ๋ ์ค๋ช
: ํฐ ๊ฐ์ ์์ ๊ฐ์ ๋ด์ฉ์ ํฌํจํจ
- (SRV_FORCE_IGNORE_CORRUPT) ์๋ฒ๊ฐ ๊นจ์ง ํ์ด์ง๋ฅผ ๋ฐ๊ฒฌํ๋ค๊ณ ํ๋๋ผ๋ ๊ณ์ ๊ตฌ๋ํ๋๋ก ๋ง๋ฆ
- (SRV_FORCE_NO_BACKGROUND) ๋ฉ์ธ ์ฐ๋ ๋๊ฐ ๊ตฌ๋๋์ง ๋ชป ํ๋๋ก ํจ
- (SRV_FORCE_NO_TRX_UNDO) ๋ณต๊ตฌ ๋ค์์ ํธ๋์ ์ ๋กค๋ฐฑ์ ์คํํ์ง ์์
- (SRV_FORCE_NO_IBUF_MERGE) ์ฝ์ ๋ฒํผ ๋ณํฉ ์ฐ์ฐ (insert buffer merge operations)๊น์ง ๊ธ์ง
- (SRV_FORCE_NO_UNDO_LOG_SCAN) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ํ ๋ UNDO log๋ฅผ ๊ฒ์ฌํ์ง ์์
- (SRV_FORCE_NO_LOG_REDO) ๋ณต๊ตฌ ์ฐ๊ฒฐ์์ ๋ก๊ทธ ๋กค-ํฌ์๋ (roll-forward)๋ฅผ ์คํํ์ง ์์
MyISAM ์คํ ๋ฆฌ์ง ์์ง ๊ด๋ จ ์ค์
InnoDB๋ฅผ ์ฌ์ฉํ์ง ์๊ณ MyISAM๋ง ์ฌ์ฉํ๋ค๋ฉด key_buffer_size๋ฅผ ํฌ๊ฒ ์ค์
key_buffer_size = 16M # MyISAM ํ
์ด๋ธ์ด ๊ฑฐ์ ์๊ณ , ๋ฐ์ดํฐ๋ ๋งค์ฐ ์ ์ผ๋ฏ๋ก ์์ฃผ ์๊ฒ ์ค์
bulk_insert_buffer_size = 1M
myisam-recover-options = BACKUP,FORCE # MyISAM ํ
์ด๋ธ์ ์ด ๋ ์๋ ๋ณต๊ตฌ ์ต์
myisam_sort_buffer_size = 1M # ์ธ๋ฑ์ค ์ ๋ ฌ์ ํ ๋น๋๋ ๋ฒํผ์ ํฌ๊ธฐ
myisam_max_sort_file_size = 64M # ์ธ๋ฑ์ค ์ฌ ์์ฑ์ ์ฌ์ฉํ ์์ ํ์ผ์ ์ต๋ ํฌ๊ธฐ
myisam_repair_threads = 1 # ์ ๋ ฌ ๋ณต๊ตฌ์ ์ฌ์ฉ๋ ์ฐ๋ ๋ ๊ฐฏ์
ft_min_word_len # MyISAM ํน์ InnoDB ํ
์ด๋ธ FULLTEXT ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ๋ ํฌํจ๋ ๋จ์ด์ ์ต์ ๊ธธ์ด (mgroonga์๋ ๊ด๋ จ ์๋ ์ค์ )
- ์ด ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด โREPAIR TABLE ํ ์ด๋ธ์ด๋ฆ QUICKโ ์ผ๋ก ์ฌ ๊ตฌ์ถํด์ผํจ
Aria ์คํ ๋ฆฌ์ง ์์ง ๊ด๋ จ ์ค์
internal temporary table์ด ์์ฑ๋ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Aria ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ฏ๋ก ์ง๋์น๊ฒ ์๊ฒ ์ค์ ํ์ง ๋ง ๊ฒ
- ์: aria_pagecache_buffer_size = 1M
aria_pagecache_buffer_size = 32M
aria_sort_buffer_size = 32K
aria_log_file_size = 64M
ํต๊ณ ๋ฐ Optimizing ๊ด๋ จ ์ค์
use_stat_tables = NEVER # ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ ์ ๋ณด์ ํตํฉ ํต๊ณ ์ ๋ณด๋ฅผ ์ด์ฉํ๋ ์ฐ์ ์์๋ฅผ ๊ฒฐ์
- NEVER: ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ์ ๋ณด๋ง ์์ง
- COMPLEMENTARY : ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ์ ๋ณด๋ฅผ ์ฐ์ ์ฌ์ฉํ๊ณ ์ ๋ณด๊ฐ ๋ถ์กฑํ๋ฉด ํตํฉ ํต๊ณ ์ ๋ณด ์ฌ์ฉ
- PREFERABLY: ํตํฉ ํต๊ณ์ ๋ณด๋ฅผ ์ฐ์ ์ฌ์ฉ ์ฌ์ฉํ๊ณ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ ์ ๋ณด ์ฌ์ฉ
- ํตํฉ ํต๊ณ์ ๋ณด๋? mysql.table_stat, mysql.column_stat, mysql.index_stat
histogram_size = 20 # ํ์คํ ๊ทธ๋จ์ ์ ์ฅํ ๊ณต๊ฐ ํฌ๊ธฐ(bytes๋จ์), ํ์คํ ๊ทธ๋จ ์ ๋ณด๋ mysql.column_stat ์ ์ฅ
- 0 ~ 255 ๊น์ง ์ค์ ๊ฐ๋ฅ, 0์ด๋ฉด ํ์คํ ๊ทธ๋จ ์์ง ์ ํจ
- MariaDB๋ Height-Balanced Histogram ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ, ๋ฒํท์ ์ ์ฅ๋ ์ต๋๊ฐ์ 1byte ํ ๋นํด์ ์ ์ฅ
histogram_type = SINGLE_PREC_HB # - SINGLE_PREC_HB : histogram_size ๋งํผ ๋ฒํท ์์ฑ
- DOUBLE_PREC_HB : histogram_size/2 ๋งํผ ๋ฒํท ์์ฑ (๋ฒํท๋น 2byte๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ ํ์ฑ์ ํ๋ํ๊ธฐ ๋๋ฌธ)
optimizer_prune_level = 1 # ์กฐ์ธ ์์ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ (1: Greedy ๋ฐฉ์, 2: Exhaustive ๋ฐฉ์)
optimizer_search_depth = 20 # Greedy ๋ฐฉ์์์ ์ฟผ๋ฆฌ์ ์๋ ํ
์ด๋ธ ์ค ๋ช๊ฐ ํ
์ด๋ธ์ ์กฐ์ธ ์์ ์ต์ ํ๋ฅผ ์ฐพ์ ์ง ๊ฒฐ์ (๊ธฐ๋ณธ 62)
optimizer_use_condition_selectivity = 4 # ์ตํฐ๋ง์ด์ ์ ํ๋(1~5)
- MariaDB 5.5 ๋ฒ์ ์์ ์ฌ์ฉํ๋ ์ ํ๋ ์์ธก ๋ฐฉ์์ ์ ์ง(๋ํดํธ ๊ฐ)
- ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์๋ง ์ ํ๋ ํ๋จ
- ๋ชจ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์ ์ ํ๋ ํ๋จ(ํ์คํ ๊ทธ๋จ ์ฌ์ฉ ์ํจ)
- ๋ชจ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์ ์ ํ๋ ํ๋จ(ํ์คํ ๊ทธ๋จ ์ฌ์ฉ)
- 4์ ์ถ๊ฐ์ ์ผ๋ก ๋ฒ์ ๊ฒ์์ด ์๋ ์กฐ๊ฑด์ ๋ํด์๋ ์ํ๋ง ์ ๋ณด๋ฅผ ์ด์ฉํด ์ ํ๋๋ฅผ ํ๋จ
userstat = ON # Enable INFORMATION_SCHEMA.%_STATISTICS tables
Binary Logs
server_id = 1
Binary Log ์ค๋ช
- ์จ์ง๋ ์์
1) ํธ๋์ญ์ ์ ์ง์ํ๋ ์คํ ๋ฆฌ์ง ์์ง(์: InnoDB)
commit ๋ ํ lock์ด ํด์ง ๋์ง ์์ ์ํ์์ ์ฟผ๋ฆฌ๋ฅผ ๋ก๊น
commit ์ ์๋ ์ฟผ๋ฆฌ ์ ๋ณด๊ฐ cache๋๊ณ commit ๋ ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ์ ๋ณด๊ฐ ๋ก๊น ๋จ
2) ํธ๋์ญ์ ์ ์ง์ํ๋ ์๋ ์คํ ๋ฆฌ์ง ์์ง(์: MyISAM)
์ฟผ๋ฆฌ ์คํ ์งํ ๋ฐ๋ก ๋ก๊น ๋จ
ํธ๋์ญ์ ์์ ํธ๋์ญ์ ์ ์ง์ํ์ง ์๋ ํ ์ด๋ธ์ด ์์ด๋ฉด, ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋๋ ๊ทธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ ๋กค๋ฐฑ ์ ๋จ - ํ์ฑํ ๋ฐฉ๋ฒ
log_bin ์ค์
log_bin = /data001/mysvc01/binary_MARIASVC/mysvc01-bin # binary log ๊ฒฝ๋ก
binlog_cache_size = 256K # ์ฐ๋ ๋ ๋ณ๋ก binary logging๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํ ์บ์ ์ฌ์ด์ฆ๋ก ํธ๋์ญ์
์ง์ ๊ตฌ๋ฌธ๋ง์ ์ํด ์ฌ์ฉ๋จ
ํฐ ๋ค์ค๋ฌธ ํธ๋์ญ์
์ ๋ฒ๋ฒํ ์ฌ์ฉํ๋ค๋ฉด ์ด ์ฌ์ด์ฆ๋ฅผ ํฌ๊ฒ ์ก์์ ํผํฌ๋จผ์ค๋ฅผ ๊ฐ์ ํ ์ ์์
- ์ต๋ ์ฌ์ด์ฆ: max_binlog_cache_size๋ก ์ค์ ๊ฐ๋ฅ
binlog_stmt_cache_size = 32K # ์ฐ๋ ๋ ๋ณ๋ก binary logging๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํ ์บ์ ์ฌ์ด์ฆ๋ก ํธ๋์ญ์ ์ง์ํ์ง ์๋ ๊ตฌ๋ฌธ๋ง์ ์ํด ์ฌ์ฉ๋จ - ์ต๋ ์ฌ์ด์ฆ: max_binlog_stmt_cache_size๋ก ์ค์ ๊ฐ๋ฅ
binlog_checksum = NONE # NONE: binary log์ ์ด๋ฒคํธ๊ฐ ์ ๋๋ก ์์ฑ๋๋์ง ๊ฐ๊ฐ์ ์ด๋ฒคํธ ๊ธธ์ด๋ฅผ ์ฒดํฌํด์ ํ์ธ
max_binlog_size = 256M # binary log file ์ต๋ ํฌ๊ธฐ
binlog_format = ROW # binary log์ ๊ธฐ๋กํ ๋ฐ์ดํฐ ์ ํ
- transaction_isolation์ด โREAD-COMMITTEDโ ์ด์์ด๋ฉด โMIXEDโ ์ด์์ผ๋ก ์ค์ ํด์ผ ํจ
- STATEMENT: ๋ช ๋ น๋ฌธ ๊ธฐ๋ก
- MIXED : ๋ช๋ช ์ผ๊ด์ฑ์ ๋ณด์ฅํ์ง ๋ชป ํ๋ ๊ฒฝ์ฐ์๋ ROW ํฌ๋ฉง์ผ๋ก, ๊ทธ ์ธ์๋ STATEMENT ํฌ๋ฉง์ผ๋ก ๊ธฐ๋ก
- ROW: ์ค์ ๋ ์ฝ๋ ๊ธฐ๋ก
sync_binlog = 0 # DB์ binary log ๋๊ธฐํ ๋น๋ ์ค์
- 0: binary log๋ฅผ ๊ธฐ๋กํ์ง๋ง ์ง์ ์ ์ผ๋ก ํ๋ฌ์(๋๊ธฐํ)๋ฅผ ์คํํ์ง ์๊ณ , OS์ ๋งก๊น (๋ฆฌ๋ ์ค ๊ณ์ด์ 3~5์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋ ํ๋ฌ์ํจ)
- 1: binary log์ ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋์คํฌ ๋๊ธฐํ ์ํ
binary log ์์ค์ ์์ง๋ง ์ฆ์ ๋์คํฌ I/O๋ก ๋๋ ค์ง ์ ์์
1 ์ด์์ ๊ฐ: ์ค์ ๋ ํ์๋งํผ binary log ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ ๋๋ง๋ค DB๊ฐ binary log ํ์ผ์ ๋๊ธฐํ๋ฅผ ์คํ
์ค์ ๋ ๊ฐ์ด ํด์๋ก ์์ค๋ ์ ์๋ binary log์ ์์ด ๋ง์์ง๊ณ binary log์ ์ฐ๊ธฐ ์ฑ๋ฅ์ ์ข์์ง
expire_logs_days = 1 # binary log ๋ณด๊ด๊ธฐ๊ฐ(์ผ), ์ด ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์๋ ์ญ์
log_bin_trust_function_creators = 1 # Routine ์์ฑ์ ์ ๋ขฐ, replication ํ๊ฒฝ์์๋ ์ด ์ค์ ์ ํด์ผ๋ง Routine ์์ฑ์ด ๊ฐ๋ฅํจ
binlog-annotate-row-events = ON # ์ฃผ์๋ binary log์ ๋จ๋๋ก ์ฒ๋ฆฌ
sql_log_bin = 0
mysqld์ ์ ์ฉ๋๋ ์์คํ
๋ณ์๋ ์๋๊ณ , ์ฐ๋ ๋๋ ๋ฒจ์์ ์ค์ ํ ์ ์๋ ๊ฐ์
ํด๋น ์ฐ๋ ๋์์ binary log๊ฐ ์ ๋จ๊ฒ ํ๊ณ ์ถ์ ๋๋ 0์ผ๋ก ์ค์ ๊ฐ๋ฅ, SUPER ๊ถํ ํ์ํจ
์ฌ๋ ์ด๋ธ(Slave) ์ค์ - replication ํ๊ฒฝ์์ slave์ผ ๋๋ง ์๋ฏธ ์์
relay_log = /logs001/mysvc01/MARIASVC/relay # ๋ฆด๋ ์ด ๋ก๊ทธ ๊ฒฝ๋ก
relay_log_purge = TRUE
read_only # ์ผ๊ธฐ ์ ์ฉ DB๋ก ์ค์
์ฌ๋ ์ด๋ธ(Slave)์ด๋ฉด์ ๋ง์คํฐ(Master)์ธ ๊ฒฝ์ฐ
log-slave-updates # ํ์ฌ ๋ณต์ ๋๋ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ์ ์ฅ
mysqld_safe ๋ฐ๋ชฌ์๋ง ์ ์ฉ๋๋ ์ค์
[mysqld_safe]
log-error=/logs001/mysvc01/MARIASVC/error/mysqld.err # ์๋ฌ๋ก๊ทธ ํ์ผ๊ฒฝ๋ก
pid-file = /engn001/mysvc01/MARIASVC/mysqld.pid # ํ๋ก์ธ์ค ID ํ์ผ๊ฒฝ๋ก
socket = /engn001/mysvc01/MARIASVC/mysqld.sock # ์์ผํ์ผ ๊ฒฝ๋ก
nice = 0
mysqldump ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์
[mysqldump]
max_allowed_packet = 1G
default-character-set = โutf8mb4โ
quick # ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ , direct๋ก ๋คํ๋ฐ๊ธฐ
mysqldump ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์
[mysqldump]
max_allowed_packet = 1G
default-character-set = โutf8mb4โ
quick # ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ , direct๋ก ๋คํ๋ฐ๊ธฐ
mysql ํด๋ผ์ด์ธํธ ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์
[mysql]
default-character-set = โutf8mb4โ
no-auto-rehash # ์๋ ์์ฑ ๊ธฐ๋ฅ ๋นํ์ฑํ
local-infile = ON # local file์ ์ด์ฉํ LOAD DATA ์์
์ด ๊ฐ๋ฅํ๊ฒ ํจ
enable-secure-auth # ์๋ฒ๋ก ๊ตฌ๋ฒ์ (4.1๋ฒ์ ์ดํ) ํฌ๋ฉง์ผ๋ก ๋ ํจ์ค์๋ ์ ๋ฌ ๋นํ์ฑํ
prompt=(\U){\h}[\d]_\R:\m:\s>_ # SQL ํ๋กฌํํธ ์ค์
pager=less -n -i -F -X -E # ๋ฐ์ดํฐ ์ถ๋ ฅ์ ํ์ด์ง์ฒ๋ฆฌ
show-warnings # ๊ฒฝ๊ณ ๋ฐ์์ ๋ฉ์ธ์ง ์๋ ์ถ๋ ฅ
#safe-updates # ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋๋ ์ญ์ ์ where์ ์ ํ์๋ก ๊ฐ๋๋ก ์ฒ๋ฆฌ
#i-am-a-dummy
xtrabackup (innobackupex) ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์
[xtrabackup]
default-character-set = โutf8โ
- clientlib 5.1๋ก xtrabackup binary๊ฐ build๋ ๊ฒฝ์ฐ, ํด๋น lib์๋ utf8mb4๊ฐ ์์ด์ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์
- ์ค๋ฅ๋ด์ฉ: โCanโt initialize character set utf8mb4โ
- lib 5.5๋ก xtrabackup์ ๋ค์ ์ปดํ์ผํ๋ฉด ๋ฌธ์ ๊ฐ ์์ง๋ง workaround๋ก ์์ ๊ฐ์ ์ต์ ์ ์ค์ ํด๋ ๋จ
- ์ ์ค์ ์ ํน๋ณํ ์๋ฏธ๋ ์์ผ๋ฉฐ lib 5.1์๋ utf8์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์
๋ชจ๋ ํด๋ผ์ด์ธํธ ํด์ ์ด์ฉํ DB ์ ์์์ ์ ์ฉ๋๋ ์ค์
[client]
port = 3306
socket = /engn001/mysvc01/MARIASVC/mysqld.sock
default-character-set=utf8mb4
Leave a comment