Skip to main content

Command Palette

Search for a command to run...

MySQL ๋กœ๊ทธ ํŒŒ์ผ

Real MySQL 8.0 ์Šคํ„ฐ๋””-6

Updated
โ€ข2 min read
MySQL ๋กœ๊ทธ ํŒŒ์ผ
๐Ÿ’ก
์ด ๊ธ€์€ Real MySQL 8.0๊ณผ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

MySQL ์„œ๋ฒ„์—์„œ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋„๊ตฌ๋“ค์ด ์ง€์›๋˜์ง€๋งŒ ์•„์‰ฝ๊ฒŒ๋„ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๋งŽ์€ ์ง€์‹์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•˜๋ฉด MySQL ์„œ๋ฒ„์˜ ๊นŠ์€ ๋‚ด๋ถ€ ์ง€์‹์ด ์—†์–ด๋„ MySQL์˜ ์ƒํƒœ๋‚˜ ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์›์ธ์„ ์‰ฝ๊ฒŒ ์ฐพ์•„์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์—๋Ÿฌ ๋กœ๊ทธ ํŒŒ์ผ

MySQL์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋‚˜ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๋กœ๊ทธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์œ„์น˜๋Š” MySQL ์„ค์ • ํŒŒ์ผ(my.cnf ๋˜๋Š” my.ini)์—์„œ log_error๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ •์˜๋œ ๊ฒฝ๋กœ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ์— .err๋ผ๋Š” ํ™•์žฅ์ž๊ฐ€ ๋ถ™์€ ํŒŒ์ผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋กœ๊ทธ ํŒŒ์ผ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋“ค์„ ๊ฐ€์žฅ ์ž์ฃผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • MySQL์ด ์‹œ์ž‘ํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด์„ฑ ๋ฐ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ข…๋ฃŒํ•  ๋•Œ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚˜๋Š” InnoDB์˜ ํŠธ๋žœ์žญ์…˜ ๋ณต๊ตฌ ๋ฉ”์‹œ์ง€

  • ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๋„์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

  • ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ์ปค๋„ฅ์…˜ ๋ฉ”์‹œ์ง€

  • InnoDB์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋˜๋Š” ์ƒํƒœ ์กฐํšŒ ๋ช…๋ น์˜ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€

  • MySQL์˜ ์ข…๋ฃŒ ๋ฉ”์‹œ์ง€

2. ์ œ๋„ˆ๋Ÿด ์ฟผ๋ฆฌ ๋กœ๊ทธ ํŒŒ์ผ(์ œ๋„ˆ๋Ÿด ๋กœ๊ทธ ํŒŒ์ผ, General log)

mysqld๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋กœ๊ทธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ฆ‰, MySQL ์„œ๋ฒ„์—์„œ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ์‹คํ–‰๋๋˜ ์ฟผ๋ฆฌ์˜ ๋‚ด์šฉ์ด ๋ชจ๋‘ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ œ๋„ˆ๋Ÿด ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ์‹คํ–‰๋˜๊ธฐ ์ „์— MySQL์ด ์ฟผ๋ฆฌ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ๋ฐ”๋กœ ๊ธฐ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ ์‹คํ–‰ ์ค‘์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์ผ๋‹จ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋Š” general_log_file์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์„ค์ •๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ์ด ์•„๋‹Œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ”์„ SQL๋กœ ์กฐํšŒํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ• ์ง€ ํ…Œ์ด๋ธ”๋กœ ์ €์žฅํ• ์ง€๋Š” log_output ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ๊ด€๋ จ๋œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ๋ฉ”๋‰ด์–ผ์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

3. ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ

์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ์‹คํ–‰ํ•˜๋Š” ๋ฐ long_query_time์ดˆ ์ด์ƒ ๊ฑธ๋ฆฌ๊ณ  ์ตœ์†Œ min_examined_row_limit ํ–‰์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” SQL๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ์‹คํ–‰์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ํ™” ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋„ˆ๋Ÿด ์ฟผ๋ฆฌ ๋กœ๊ทธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ log_output ์˜ต์…˜์„ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ• ์ง€ ํ…Œ์ด๋ธ”๋กœ ์ €์žฅํ• ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ œ๋„ˆ๋Ÿด ์ฟผ๋ฆฌ ๋กœ๊ทธ ๋˜๋Š” ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์›Œ๋‚™ ๋งŽ์•„์„œ ์ง์ ‘ ์ฟผ๋ฆฌ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฒ€ํ† ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํž˜๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์— Precona์—์„œ ๊ฐœ๋ฐœํ•œ Percona Toolkit์˜ pt-query-digest ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋นˆ๋„๋‚˜ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ๋ณ„๋กœ ์ •๋ ฌํ•ด์„œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐ŸŽฏ์ •๋ฆฌ

  • MySQL์˜ ์ƒํƒœ๋‚˜ ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์›์ธ์„ ์ฐพ๊ณ  ์‹ถ๋‹ค๋ฉด ์ œ์ผ ๋จผ์ € ๋กœ๊ทธ ํŒŒ์ผ๋“ค์„ ์‚ดํŽด๋ด…์‹œ๋‹ค.

  • ์—๋Ÿฌ ๋กœ๊ทธ ํŒŒ์ผ์€ MySQL ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์น˜๋ช…์ ์ธ ์—๋Ÿฌ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ œ๋„ˆ๋Ÿด ์ฟผ๋ฆฌ ๋กœ๊ทธ ํŒŒ์ผ์€ MySQL ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ์˜ ๋‚ด์šฉ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

  • ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ long_query_time์— ์„ค์ •ํ•œ ์‹œ๊ฐ„ ์ด์ƒ์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ ๋ชจ๋“  ์ฟผ๋ฆฌ๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”–์ฐธ๊ณ