[PostgreSQL] RDS ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐฉ๋ฒ• : pg_stat_statements ์„ค์น˜, ๊ณ ๋ ค์‚ฌํ•ญ ๋ฐ ์ฃผ์š” ์ง€ํ‘œ

[PostgreSQL] RDS ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐฉ๋ฒ• : pg_stat_statements ์„ค์น˜, ๊ณ ๋ ค์‚ฌํ•ญ ๋ฐ ์ฃผ์š” ์ง€ํ‘œ

1. RDS์—์„œ์˜ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ถ„์„, pg_stat_statements๋ž€? RDS์—์„œ๋Š” ์™ธ๋ถ€ ์ต์Šคํ…์…˜ ์‚ฌ์šฉ์ด ์ œํ•œ๋œ๋‹ค. ์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋ฐ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ง€ํ‘œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ต์Šคํ…์…˜์ด ์žˆ์ง€๋งŒ, ๊ทธ์ค‘ pg_stat_statements๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค. pg_stat_statements์˜ ์›๋ฆฌ, ์‚ฌ์šฉ๋ฒ•, ์ฃผ์š” ์ง€ํ‘œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. pg_stat_statements๋Š” ์‹คํ–‰๋œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค. ๋‹ค์Œ์€ ์ €์žฅ๋˜๋Š” ์ฃผ์š” ์ง€ํ‘œ๋“ค์ด๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.ย ์ฟผ๋ฆฌ๋นˆ๋„ ์ฟผ๋ฆฌ ์‹คํ–‰์‹œ๊ฐ„ ์ฟผ๋ฆฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ (CPU, ๋””์ŠคํฌI/O, ๋ฒ„ํผ ํžˆํŠธ ๋“ฑ) ์ฟผ๋ฆฌ ํ…์ŠคํŠธ ์ €์žฅ 2. ์„ค์น˜ย ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์ง€์•Š๋‹ค๋ฉด ์ต์Šคํ…์…˜์„ ๋จผ์ € ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค. ...

[๋””์ž์ธํŒจํ„ด] ๋นŒ๋”(Builder) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

[๋””์ž์ธํŒจํ„ด] ๋นŒ๋”(Builder) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

1. ๋นŒ๋”(Builder) ํŒจํ„ด์ด๋ž€? ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ํฐ ๊ตฌ์กฐ๋ฌผ์„ ๊ฑด์ถ•, ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ build๋ผ๊ณ  ํ•œ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒ๋”ฉ์„ ์ง€์„ ๋•Œ ์ง€๋ฐ˜๋‹ค์ง€๊ธฐ, ๋ผˆ๋Œ€ ๋งŒ๋“ค๊ธฐ ๋“ฑ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ์•„๋ž˜์—์„œ ์œ„๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด๊ฐ„๋‹ค. ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฌผ์„ ๋‹จ์ˆจ์— ์™„์„ฑํ•˜๊ธฐ๋Š” ์–ด๋ ต๊ธฐ์—, ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋ถ€๋ถ„์„ ๋งŒ๋“ค๊ณ  ๋‹จ๊ณ„๋ฅผ ๋ฐŸ์•„๊ฐ€๋ฉฐ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. Builder ํŒจํ„ด์€ ์ด์ฒ˜๋Ÿผ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ณต์žกํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์กฐ๋ฆฝํ•ด ๊ฐ€๋Š” ํŒจํ„ด์ด๋‹ค.ย 2. ๋นŒ๋” ํŒจํ„ด์˜ ๊ตฌ์กฐ ๋นŒ๋”ํŒจํ„ด ์˜ˆ์ œ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ Builder ์—ญ - ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฒฐ์ •, ์ธ์Šคํ„ด์Šค ๊ฐ ๋ถ€๋ถ„์„ ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜. ์˜ˆ์ œ์—์„œ๋Š” Builder ํด๋ž˜์Šค๊ฐ€ ์—ญํ• ์„ ๋งก์Œ ConcreteBuilder ์—ญ - ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„, ์‹ค์ œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ •์˜ TextBuilder, HTMLBuilder ํด๋ž˜์Šค๊ฐ€ ์—ญํ• ์„ ๋งก์Œ Director ์—ญ- Builder์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•œ๋‹ค. Concrete Builder์—ญ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฉฐ, ConcreteBuilder์— ์ƒ๊ด€์—†์ด ์ž‘๋™ํ•˜๋„๋ก Builder์˜ ๋ฉ”์„œ๋“œ๋งŒ ํ™œ์šฉํ•œ๋‹ค. ์˜ˆ์ œ์—์„œ๋Š” Directorํด๋ž˜์Šค๊ฐ€ ์—ญํ• ์„ ๋งก์Œ 3. ์˜ˆ์ œ ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. ...

[Spring] Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ์—๋Ÿฌ

[Spring] Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ์—๋Ÿฌ

Amazon RDS and Amazon Aurora SSL/TLS ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ›„ ๋ณ„๋‹ค๋ฅธ ์„ค์ • ๋ณ€๊ฒฝ์„ ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์˜ค๋žœ๋งŒ์— ๋นŒ๋“œํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ ๋ฐœ์ƒํ•˜์˜€๋‹ค. [### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host โ€œ{host}โ€, user โ€œ{user}โ€, database โ€œ{database}โ€, no encryptionย ] RDS ์ธ์ฆ์„œ ์—…๋ฐ์ดํŠธ ์ž‘์—… ํ›„ SSL ์š”๊ตฌ์„ค์ •์ด ํ™œ์„ฑํ™”๋œ ๊ฒƒ์œผ๋กœ, ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉฐ ์ ‘์†์ด ์•ˆ๋œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ...

[PostgreSQL] SUBSTRING, SUBSTR, ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ

[PostgreSQL] SUBSTRING, SUBSTR, ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ

PostgreSQL์—์„œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ์ค‘ ๋ฌธ์ž์—ด์„ ์›ํ•˜๋Š” ๋ฐฉ์‹๋Œ€๋กœ ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋จผ์ €, ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” SUBSTRING, SUBSTR์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฒ• ๋ฐ ์‘์šฉ, ์„ฑ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. 1. Substring ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• Substring๊ณผ Substr์€ ์‹œ์ž‘ ์œ„์น˜(n), ๊ธธ์ด(l)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ž๋ฅผ ์ˆ˜ ์žˆ๋‹ค. SELECT substring('๋ฌธ์ž์—ด' FROM n FOR l); -- from, for ๊ตฌ๋ฌธ์€ substring๋งŒ ์ง€์› SELECT substring('๋ฌธ์ž์—ด', n, l); SELECT substr('๋ฌธ์ž์—ด', n, l); ๊ตฌ๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌย PostgreSQL Tutorial ๋ฌธ์ž์—ด์—์„œ ์ฒซ๋ฒˆ์งธ ์œ„์น˜์ธ P๋ถ€ํ„ฐ 10๊ฐœ์˜ ๋ฌธ์ž์—ด๋งŒ์„ ์ถ”์ถœํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ...

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] 10. equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ

1. ๊ฐœ๋… equals๋ฅผ ๋‹จ์ˆœํžˆ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ํ•จ์ •์ด ๋งŽ๋‹ค. ์ด๋ฒˆ ์žฅ์—์„œ๋Š” equals๋ฅผ ์žฌ์ •์˜ ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ ๊ณผ, ์žฌ์ •์˜๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. 2. equals๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 2-1. equals๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒฝ์šฐ ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค: ์˜ˆ๋ฅผ ๋“ค์–ด, Thread ํด๋ž˜์Šค๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณ ์œ ํ•œ ID๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ equals๋ฅผ ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด ์‹๋ณ„์„ฑ๋งŒ ์ค‘์š”ํ•˜๋ฉฐ, ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ์€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•œ equals๊ฐ€ ํ•˜์œ„ ํด๋ž˜์Šค์— ์ ์ ˆํ•œ ๊ฒฝ์šฐ: ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ด๋ฏธ equals๋ฅผ ์ ์ ˆํžˆ ๊ตฌํ˜„ํ–ˆ๊ณ , ์ด๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ์ ‘๊ทผ์ด ์ œํ•œ๋œ ํด๋ž˜์Šค: equals๋ฅผ ํ˜ธ์ถœํ•  ์ผ์ด ์—†๋Š” private์ด๋‚˜ package-private ํด๋ž˜์Šค์ผ ๊ฒฝ์šฐ, ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 2-2. equals๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ: ๊ฐ์ฒด์˜ ๋‚ด์šฉ์ด ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•  ๋•Œ, ์ƒ์œ„ ํด๋ž˜์Šค์˜ equals๊ฐ€ ์ด๋ฅผ ์ถฉ์กฑ์‹œํ‚ค์ง€ ์•Š์„ ๋•Œ ์žฌ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 3. equals ๋ฉ”์„œ๋“œ์˜ ๊ทœ์•ฝ Object ๊ธฐ๋ณธ ๋ช…์„ธ์˜ equals ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ์˜ ๊ทœ์•ฝ์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค: ...