처음에는 1시간 일찍..하다가 이게.. 8시, 7시, 하더니 오늘은 어린이날이라 빨리 진료를 볼까 싶어서
비와도 6시 40분 넘어서 도착했는데..
그래도 내 앞에 9명이나 있었다.
(도대체 이 사람들은 몇 시에 왔단 말인가;)
갈수록 시간이 앞당겨지는 거 같다.
명품관 오픈런도 아니고..;
아이병원 오전진료 예약하려고 새벽부터 줄을 서야 하다니..
(에휴;)
8시쯤 되면 문을 열고 예약번호를 나눠준다.
8시 40분부터 접수라서
이제는 애들 데리러 뛰어가야 한다.
첫째는 짜증부리고, 둘째는 잠이 덜깬 상태..
일단 애를 들쳐업고 차에 태운 뒤
급하게 돌아와서 보니 8시 30분
(늦진 않았다... 휴~)
오늘은 백정현 선생님 안계시니 다들 대기시간 비슷할 꺼 같아서
박상현 or 원종우 선생님 둘 중 빠른 분으로 예약하고
한숨 돌리고 뒤를 돌아보니
와...
어린이날인데.. 애들 진짜 많다
결국 오전진료 예약마감은 10시쯤 끝났고
오후 진료를 예약하기 위해 대기하는 줄만 장사진이다.
웃픈건 오늘은 유치원 가는 날이 아닌데..
아이 유치원 친구들을 여기서 다시 다 만났다는 것이다.ㅎㅎ~ (요즘 마스크 벗고 나서 애들이 그동안 안 걸린 여러 바이러스 감기가 한꺼번에 와서 다들 힘들다..)
진료 보고 약국에서 약까지 받고 나니 9시 45분
오전 미션 끝났다^^
#주말진료 tip 다시 정리하면
1. 오전진료
1) 7시 전에 와서 줄을 선다 - 경험상 7시 30분 넘어가면 대기 100번까지 밀릴 수 있다 7시 전에 오면 많아도 50번 위 아래 였던 거 같다.
2) 8시에 예약번호를 받고 8:40분 접수 전까지 애들을 데려온다. - 접수할 때는 애들이 없어도 되지만, 일단 접수를 하게 되면 바로 열체크 하라고 간호사가 얘기하고 9시부터 진료 시작하는데 열체크 안되어 있으면, 아이 있는지 계속물어보고
"근처라서 지금 오고 있어요." 라고 해도 앞에 한 두명까지는 봐주겠지만.. 그 이상부터는 "예약취소됩니다" 라고.. 계속 얘기하기 때문에
스트레스가 이만저만이 아니다. 미리 와있는 게 맘이 편함
3) 진료 - 진료현황판을 보다가 대기 3~5번째가 되면 미리 진료실 근처로 앞에 나와있는 게 좋다. (간호사분이 곧 애 이름을 호명할 것이기 때문에 ㅎㅎ)
4) 수납 - 수납은 한쪽 창구에서만 받기 때문에 생각보다 시간이 걸린다. 부부가 같이 왔다면 사람이 많으니까 애들은 미리 약국으로 내려보내고 한사람만 남아서 수납하고 뒤따라 가는 게 낫다.
5) 주차 - 우리아이들병원 주차장에는 7시 좀 넘으면 다차서 못댄다 옆에 NC 백화점 주차장에 주차하면 된다 (병원진료후 수납할 때 얘기하면 2시간 무료 등록해줌)
2. 오후진료
- 오전 9시부터 와서 줄서서 기다려야함 중간에 오전진료마감된 사람들 중 일부가 예약취소(애를 못 데려와서ㅠ) 되어서 들어가는 경우가 있긴 한데 취소표를 받고 오전진료를 본다는 것은 이미 대기자가 많아서 2시간 이상은 기다려야할 것이다. 오후진료는 별로 추천하고 싶지 않다.
# 기념우표관련 상품설명 <뽀롱뽀롱 뽀로로>는 호기심 많은 개구쟁이 꼬마 펭귄 뽀로로와 그의 친구들이 벌이는 재미난 소동과 감동을 담은 스토리로 2003년 첫 방영 이후 현재까지 어린이들의 마음을 사로잡고 있는 국내 대표 애니메이션입니다. 뽀로로 탄생 20주년을 맞아
이제는 글로벌 캐릭터가 된 뽀로로와 친구들을 기념우표로 만나봅니다.
2003년 11월 27일, EBS에서 정규 프로그램으로 방영된 〈뽀롱뽀롱 뽀로로〉는 어린 펭귄 뽀로로와 친구들의 이야기를 담은 애니메이션입니다. “안녕? 난 뽀로로야”라는 인사와 함께 등장한 뽀로로는 우리 주변에서 일어날 수 있는 친근한 에피소드로 어린이들의 마음을 사로잡았으며, 교육과 재미를 동시에 충족한 애니메이션으로 육아를 하는 부모들에게도 큰 사랑을 받고 있습니다. 어린이들의 대통령이라는 의미에서 ‘뽀통령’이라는 별명까지 갖게 된 뽀로로는 국내 300여 개 라이선스 파트너사에서 약 5,000여 종의 관련 상품을 출시하는 등 수년간 영유아 국내 캐릭터 인지도 및 선호도 1위를 이어가고 있으며, 민원24, 기아대책, 한국 방문의 해 홍보대사 등 다양한 공익 캐릭터로도 널리 활용되고 있습니다. 뽀로로의 인기는 해외에서도 실감할 수 있는데, 약 130여 개국에 <뽀롱뽀롱 뽀로로>가 방영되었으며 중국, 태국, 싱가포르 등 해외 5개국에서 13개 지점의 테마파크를 운영하는 등 관련 캐릭터의 상품화도 활발히 전개되고 있습니다.
<뽀롱뽀롱 뽀로로>는 2003년 방영된 시즌1을 시작으로 현재까지 총 7개의 시리즈가 제작되었으며 2023년에는 시즌8 론칭을 앞두고 있습니다. 최근에는 <뽀롱뽀롱 뽀로로>의 루피의 부캐릭터이자 하이 타깃 IP인 <잔망루피>가 등장하여 온오프라인을 넘나들며 MZ세대에게 큰 인기를 얻고 있으며, 2021 대한민국 콘텐츠 대상 캐릭터 부문에서 대통령상을 수상하기도 하였습니다. 이처럼 <뽀롱뽀롱 뽀로로>의 캐릭터들은 어린이뿐만 아니라 MZ세대, 부모님들에게까지 사랑을 받으며, 전 세계적으로 성공을 거둔 최초의 캐릭터라는 점에서 의의가 큽니다.
기념우표는 뽀로로를 비롯한 루피, 에디, 크롱, 패티, 포비 등 친구들이 함께 모인 구성으로 발행됩니다. 알록달록한 색감을 바탕으로 “축하해요”, “꽃길만 걸어요”라는 긍정적인 메시지와 신난 친구들의 모습이 유쾌함을 더합니다. 기념우표와 함께 뽀로로와 친구들이 걸어온 지난 20년을 되새기며 동심을 일깨워 보시길 바랍니다.
2023-01-04 16:14:27 0x7f76a70d3700 InnoDB: Assertion failure in thread 140147585529600 in file trx0trx.ic line 213
InnoDB: Failing assertion: !trx->has_search_latch
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
07:14:27 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
Attempting to collect some information that could help diagnose the problem.
As this is a crash and something is definitely wrong, the information
collection process might fail.
key_buffer_size=33554432
read_buffer_size=2097152
max_used_connections=154
max_threads=1000
thread_count=128
connection_count=128
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 10286111 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x7f73bc69cf00
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7f76a70d2e28 thread_stack 0x30000
/data/bin/mysqld(my_print_stacktrace+0x35)[0xf45e05]
/data/bin/mysqld(handle_fatal_signal+0x4a4)[0x7cd464]
/lib64/libpthread.so.0[0x316c40f7e0]
/lib64/libc.so.6(gsignal+0x35)[0x316c0324f5]
/lib64/libc.so.6(abort+0x175)[0x316c033cd5]
/data/bin/mysqld(_Z18ut_print_timestampP8_IO_FILE+0x0)[0x7bc9ce]
/data/bin/mysqld[0x1045499]
/data/bin/mysqld(_Z18close_thread_tableP3THDPP5TABLE+0x288)[0xcc1468]
/data/bin/mysqld(_Z19close_thread_tablesP3THD+0x31b)[0xcc1e6b]
/data/bin/mysqld(_ZN18Prepared_statement7prepareEPKcm+0x728)[0xd3e2f8]
/data/bin/mysqld(_Z19mysqld_stmt_prepareP3THDPKcj+0x106)[0xd3f226]
/data/bin/mysqld(_Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command+0xb1d)[0xd18dcd]
/data/bin/mysqld(_Z10do_commandP3THD+0x194)[0xd1a324]
/data/bin/mysqld(handle_connection+0x29c)[0xdea0fc]
/data/bin/mysqld(pfs_spawn_thread+0x174)[0xfbdbf4]
/lib64/libpthread.so.0[0x316c407aa1]
/lib64/libc.so.6(clone+0x6d)[0x316c0e8c4d]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f73bdc4fb10): SELECT DISTINCT CC.* ,
Connection ID (thread ID): 2486689
Status: NOT_KILLED
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
2023-01-04T07:14:27.827525Z mysqld_safe Number of processes running now: 0
2023-01-04T07:14:27.830702Z mysqld_safe mysqld restarted
2023-01-04T16:14:28.009437+09:00 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-01-04T16:14:28.009545+09:00 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2023-01-04T16:14:28.009569+09:00 0 [Note] /data/bin/mysqld (mysqld 5.7.19-log) starting as process 137699 ...
2023-01-04T16:14:28.014665+09:00 0 [Note] InnoDB: PUNCH HOLE support available
2023-01-04T16:14:28.014690+09:00 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2023-01-04T16:14:28.014694+09:00 0 [Note] InnoDB: Uses event mutexes
2023-01-04T16:14:28.014699+09:00 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2023-01-04T16:14:28.014702+09:00 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2023-01-04T16:14:28.014706+09:00 0 [Note] InnoDB: Using Linux native AIO
2023-01-04T16:14:28.015218+09:00 0 [Note] InnoDB: Number of pools: 1
2023-01-04T16:14:28.015308+09:00 0 [Note] InnoDB: Using CPU crc32 instructions
2023-01-04T16:14:28.017142+09:00 0 [Note] InnoDB: Initializing buffer pool, total size = 96G, instances = 8, chunk size = 128M
2023-01-04T16:14:32.330216+09:00 0 [Note] InnoDB: Completed initialization of buffer pool
2023-01-04T16:14:32.942852+09:00 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2023-01-04T16:14:32.955591+09:00 0 [Note] InnoDB: Highest supported file format is Barracuda.
2023-01-04T16:14:33.368638+09:00 0 [Note] InnoDB: Log scan progressed past the checkpoint lsn 861023653783
2023-01-04T16:14:33.491857+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861028896256
2023-01-04T16:14:33.560747+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861034139136
2023-01-04T16:14:33.634813+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861039382016
2023-01-04T16:14:33.732145+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861044624896
2023-01-04T16:14:33.809235+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861049867776
2023-01-04T16:14:33.882321+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861055110656
2023-01-04T16:14:33.951426+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861060353536
2023-01-04T16:14:34.018926+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861065596416
2023-01-04T16:14:34.087345+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861070839296
2023-01-04T16:14:34.157479+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861076082176
2023-01-04T16:14:34.222135+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861081325056
2023-01-04T16:14:34.289957+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861086567936
2023-01-04T16:14:34.383546+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861091810816
2023-01-04T16:14:34.428047+09:00 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 861095311315
2023-01-04T16:14:34.428365+09:00 0 [Note] InnoDB: Database was not shutdown normally!
2023-01-04T16:14:34.428373+09:00 0 [Note] InnoDB: Starting crash recovery.
2023-01-04T16:14:34.664412+09:00 0 [Note] InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percent: 0 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
2023-01-04T16:14:39.164388+09:00 0 [Note] InnoDB: Apply batch completed
2023-01-04T16:14:39.164433+09:00 0 [Note] InnoDB: Last MySQL binlog file position 0 1770351, file name mysql-bin.002910
2023-01-04T16:14:39.376296+09:00 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2023-01-04T16:14:39.376322+09:00 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-01-04T16:14:39.376352+09:00 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-01-04T16:14:39.380934+09:00 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-01-04T16:14:39.381506+09:00 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2023-01-04T16:14:39.381516+09:00 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2023-01-04T16:14:39.382232+09:00 0 [Note] InnoDB: Waiting for purge to start
2023-01-04T16:14:39.432361+09:00 0 [Note] InnoDB: 5.7.19 started; log sequence number 861095311315
2023-01-04T16:14:39.432402+09:00 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 6490ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
2023-01-04T16:14:39.433144+09:00 0 [Note] InnoDB: Loading buffer pool(s) from /data/mysqldb_data/ib_buffer_pool
2023-01-04T16:14:39.441399+09:00 0 [ERROR] Function 'federated' already exists
2023-01-04T16:14:39.441413+09:00 0 [Warning] Couldn't load plugin named 'federated' with soname 'ha_federated.so'.
2023-01-04T16:14:39.441750+09:00 0 [Note] Recovering after a crash using /data/mysqldb_logs/binary/mysql-bin
2023-01-04T16:14:39.447539+09:00 0 [Note] Starting crash recovery...
2023-01-04T16:14:39.447569+09:00 0 [Note] Crash recovery finished.
2023-01-04T16:14:39.453180+09:00 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2023-01-04T16:14:39.453197+09:00 0 [Note] Server hostname (bind-address): '*'; port: 3306
2023-01-04T16:14:39.453246+09:00 0 [Note] IPv6 is available.
2023-01-04T16:14:39.453257+09:00 0 [Note] - '::' resolves to '::';
2023-01-04T16:14:39.453273+09:00 0 [Note] Server socket created on IP: '::'.
2023-01-04T16:14:39.475051+09:00 0 [Note] Event Scheduler: Loaded 0 events
2023-01-04T16:14:39.475194+09:00 0 [Note] /data/bin/mysqld: ready for connections.
Version: '5.7.19-log' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)
2023-01-04T16:14:39.475230+09:00 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
2023-01-04T16:14:39.475234+09:00 0 [Note] Beginning of list of non-natively partitioned tables
2023-01-04T16:14:39.523762+09:00 0 [Note] End of list of non-natively partitioned tables
2023-01-04T16:15:27.809630+09:00 148 [Note] Start binlog_dump to master_thread_id(148) slave_server(101), pos(mysql-bin.002910, 1792665)
1. mysql.error 로그 분석
이 로그는 InnoDB 스토리지 엔진의 어설션 오류로 인해 2023년 1월 4일 07:14:27 UTC에 MySQL 서버 프로세스가 중단된 것을 보여줍니다 로그는 파일 trx0trx.ic의 line 213의 스레드 140147585529600에서 어설션 오류가 발생했으며 어설션 오류는 !trx-> has_search_latch였습니다. 트랜잭션에 검색 래치가 있기 때문에 어설션에 실패했습니다.
개발파트에서 확인 실제 xml을 보니 실제 이런 구문은 없었고.. 뭔가 부등호가 지맘대로 거기 들어가 붙어있었다
(부등호의 순간이동;;)
원인을 찾아보니 mybatis 를 사용 중인데 수식에 부등호를 쓰면서 (<![CDATA[ ]]>) 처리하지 않고 그대로 사용한 것으로 확인했다.
(<![CDATA[ ]]>) 쓰지 않을거면
< 부등호(<) > 부등호(>)
로 치환해서 써야하는데 그렇게 사용하지 않아서 이상한 쿼리를 끝내지 못하고 결국 프로세스를 재시작하면서 DB가 재시작된 것이다.
근데 저대로면 빌드가 안 되었을텐데... 어떻게 빌드된 파일로 올라갔을까?
(실제로 개발에서 테스트 했을 때도 빌드에러남ㅋㅋ)
3. 해결
문제가 된 query의 부등호 사용 부분을 아래처럼
<![CDATA[
쿼리 내용
]]>
CDATA로 감싸서 처리하고 현재까지 DB 재시작이슈는 발생하지 않았다.
그리고 이번에 발생한 CDATA 이슈에 관해 간략하게 정리한다.
4. CDATA 사용관련 내용정리
MyBatis 사용 시 쿼리문에 비교 연산자와 같이 부등호 처리가 필요할 때가 있다. 하지만 비교 연산자를 사용했을 경우 error를 발생시키는데 그 이유는 비교 연산자인지 괄호인지 구분하지 못하기 때문이다.
비교 연산자를 사용했을 때 MyBatis는 괄호인지 비교 연산자인지 구분하지 못한다. 이런 경우에 CDATA를 사용하면 CDATA 안에 들어가는 문장을 문자열로 인식해 구분할 수 있도록 도와준다.
1) CDATA란?
- (Unparsed) Character Data. 다시말하면 파싱하지 않는 문자 데이터 라는 뜻이다. 파싱하는 문자데이터는 PCDATA 라고 부름
2) CDATA를 사용하는 이유?
CDATA 안에 쿼리를 사용하면쿼리 내용의 괄호나 특수문자를 XML parser로 인식하지 않고 "문자열"로 인식한다
쿼리를 작성할 때, '<', '>', '&'를 사용해야하는 경우가 생기는데 xml에서 그냥 사용할 경우 태그로 인식하는 경우가 종종 있다. 이럴 경우 에러를 뱉어내기 때문에 '태그가 아니라 실제 쿼리에 필요한 코드'라고 알려줘야 한다. 그때 사용하는 것이 <![CDATA[...]]> 이다.
한 마디로 <>(부등호),&(앤드),||(오아) 등을 닫는 부등호가 아니라 문자열로 처리하라는 뜻입니다. 어렵게 말하자면 "XML parser"를 하지 말아라
3) CDATA 사용방법
<![CDATA[
쿼리 내용
]]>
4) CDATA를 안 쓸 때 부등호 처리
” ” : 공백(스페이스 한 칸)을 의미
<
부등호(<)
>
부등호(>)
&
앰퍼샌드(&) 기호
"
쌍따옴표(“)
#
sharp(#)
'
따옴표(‘)
(< 는 Less Than (<, 보다 작은) , > 는 Greater Than (>, 보다 큰) 의 약자라고 한다.)
미국은 연방공개시장위원회(FOMC)를 열어 5/4일 새벽 3시 기존 금리를 0.25% 인상했다.
기준금리는 2007년 9월 이후 최고 수준을 기록했다. CNBC는 연준이 최근 은행 위기에 대해 주의를 표하고 "(금리) 인상이 거의 끝나가고 있음을 나타냈다"고 분석했다. 당초 연준이 이번 FOMC 회의에서 빅스텝(0.5% 포인트 인상)을 단행할 것이라는 관측이 많았다. 하지만 최근 실리콘밸리은행(SVB) 파산 등으로 베이비스텝(0.25% 인상)을 밟을 것이라는 관측이 지배적이었다.
연준은 FOMC 회의 후 성명에서 "위원회는 들어오는 정보를 면밀히 모니터링하고 통화 정책에 대한 영향을 평가할 것"이라고 밝혔다. 특히 성명은 "위원회는 추가적인 정책 확인이 적절할 것으로 예상한다"고 했다. WSJ는 "관리들이 회의 후 정책 성명에서 금리 인상이 곧 끝날 수도 있다는 암시를 보냈다"고 풀이했다.
또한 연준이 이번 성명에서는 "지속적인 인상"이 적절할 것으로 예상한다는 이전 성명에 명기됐던 문구를 삭제했다고 WSJ은 짚었다. 성명은 최근 은행 관련 움직임이 경제를 침체할지 말하기에는 너무 이르다고 지적했다. "미국의 은행 시스템은 건강하고 탄력적이다"고 했다.
아울러 "위원회는 인플레이션 위험에 매우 주의를 기울이고 있다"고 했다. 금리 인상 결정과 함께 올해 말 금리 예상치는 5.1%로 제시했다. 지난해 12월과 같은 수준이다. "대다수 관리들이 앞으로 단 한 번의 금리 인상만 예상하고 있는 것을 나타낸다"고 CNBC는 분석했다.
이제 한미 기준금리 격차는 상단을 기준으로 종전 1.50%p를 넘어서게 된다. 여기서 나오는 숫자가 바로 '1.75'이다. 한미 기준금리가 1.50%p를 넘어서 역전된 적이 단 한번도 없었다. 유례 없는 금리 인상기였던 2000년 5월과 10월 사이에도 1.50%p를 넘기지 않았다. 한국은행이 지난 2월에 이어 지난달 11일에도 기준금리를 3.50%로 동결했으니 이번에 연준의 금리 인상으로 이제 한번도 경험해보지 못한 기록 경신이 일어났다.
금리차 1.75%포인트는 ‘가보지 못한 길’이다. 최악의 상황은 미국 투자자들이 수익률이 높고 안정적인 투자처를 찾아 빠져나가는 것이다. 실제 원·달러 환율은 최근 연고점을 갱신하는 등 불안한 모습이다.
2일 외환시장은 원·달러 환율이 전 거래일 대비 4.4원 오른 1342.1원으로 마감되었는데, 종가 기준 1340원을 넘은 것은 지난해 11월 이후 처음이다.
다만 시장은 연준의 이번 인상이 사실상 마지막이 될 것이라는 기대가 있다. 연준이 금리 변동을 발표하면서 제롬 파월 연준 의장의 발언에서 그나마 희망을 찾을 수 있다.
파월이 추가 금리 인상을 이야기하지 않으면 향후 금리 인하 가능성이 높아진다. 이와 관련 JP모건은 이번 연준이 FOMC 회의에서 기준금리를 0.25%포인트 인상한 뒤 금리를 동결할 가능성이 높다고 전망하고 있다.
미국의 은행들이 잇따라 파산하는 것도 연준의 결정에 영향을 미칠 전망이다. 여기에 미 상하원 민주당 의원 10여명이 연준에 금리 인상 중단을 호소하는 편지를 파월 의장에게 보내며 “경기 침체를 피하기 위해 금리 인상을 중단해야 한다”고 했다. 파월 의장이 이번에 설령 금리 인상을 발표하더라도, 시장의 이러한 분위기에 호응하는 발언을 덧붙이면 증시 등에는 긍정적인 신호가 될 것으로 보인다.
2. 금리 격차가 발생했을 때 대처법
- 현대경제연구원은 「한·미 적정 기준금리 추정과 시사점」에서 발췌
금리역전시기에 언제나 외국인 자금의 대규모 이탈이 발생하지는 않았다고 함
그리고 테일러 준칙(Taylor rule)으로 산출한 2022년 4분기 한·미 간 적정 기준금리 차이는
0.52%p~1.12%p으로 정도로 보고 있음
(금리인상 대비 첫째~셋째까진 개인이 볼필요는 없을 거 같아 빼고 넷째, 다섯째만 상세내용을 추가함)
첫째, 과도한 통화긴축 정책으로 경기침체 유발하지 않도록 세밀한 금리정책 운용이 필요하다.
둘째, 한국의 기준금리는 적정금리 수준에 비해 과도하게 괴리되지 않도록 통화정책이 적절히 운용되어야 할 필요가 있다.
셋째, 한·미 간 기준금리 역전 폭을 적정 수준으로 관리하기 위한 금리정책 운용이 필요하다
넷째, 한·미 기준금리 격차로 인해 발생할 수 있는 외환시장 불안정성 심화에 대한 대비가 필요하다.
- 미국의 기준금리 인상 속도가 예상보다 빨라지기 시작하면서, 원/달러 환율이 급등하는 등 외환시장 불안정성이 확대되고 있는 상황 - 정책당국은 한·미 기준금리 격차가 확대될 때마다 발생하는 외환시장 불안정성에 대해서 고강도 모니터링을 지속할 필요가 있으며, 이외에도 원/달러 환율에 급격한 변동을 일으킬 수 있는 요인들에 대한 지속적인 모니터링이 필요 - 또한, 정책당국은 시장과의 소통 능력을 강화해 경제주체들이 정책에 대한 불신을 유발하지 않도록 노력할 필요 - 이외에도, 최근 감소하고 있는 외환보유고에 대한 시장의 우려를 잠재우기 위해서
정책당국은 한·미 간 통화스왑 시도 등을 통해 외환시장 참가자들의 불안정한 심리를 완화시킬 필요
(이건 이미 물건너가서 대안으로 국민연금이랑 한국은행이 통화 스와프해서 우리연금 계속 가져다 환율방어하는데
열심히 쓰고 있음)
다섯째, 금리 인상 시 발생할 수 있는 가계부채 부실화에 대한 대비가 필요하다.
- 국내 신용시장의 불균형 수준은 장기평균 수준을 상당 폭 상회하고 있어 금리 인상 시 신용시장 충격이 발생할 가능성이 존재함 - 향후 기준금리를 적정금리 수준까지 올리게 되는 경우 국내 가계대출은 변동금리 비중이 높기 때문에 대출 금리 상승에 따른 가계의 상환 부담이 심화될 것으로 예상 - 정책당국은 가계부채 부실화 위험이 높은 저소득층, 청년층 가구의 특성을 반영한 맞춤형 지원방안을 도입하는 것이 필요 누증된 가계의 금융 불균형과 변동금리 비중이 높은 현 상황에서 한·미 간 기준금리 차이를 축소하기 위한 급격한 기준금리 인상은 경기침체 압력으로 작용 - 과거 한·미 기준금리가 역전된 시기와 달리 현재 가계부문의 금융 불균형 수준이 심화되어 있는 상황
#과거 한·미 기준금리가 역전된 시기와 비교했을 때 현재 GDP 대비 가계부채의 비중이 상당히 높음
1999년 2분기~2001년 1월 기간 평균 GDP 대비 가계부채 비율은 48.1%,2005년 8월~2007년 9월 기간은 65.8%로 다소 낮은 편
그러나, 2022년 1분기 GDP 대비 가계부채 비중은 105.4%로 과거 시기에 비해 상당히 높은 상황 2022년 가계의 변동금리 비중(신규 취급액 기준)은 81.6%로 최근 20년간 평균치를 상회하는 상황 (코픽스에서 금리인상을 결정하는 순간, 직접영향을 받을 수 있는 변동금리 대출이 많은 편이라고 얘기하고 있음)
#금리역전시 역대 변동금리 지표 ․한·미 기준금리가 역전되었던 2005년 8월~2007년 8월 기간 평균 가계의 변동금리 비중(신규취급액)은 87.0%로 상당히 높은 수준을 기록 ․반면, 2018년 3월~2020년 2월 기간 평균 변동금리 비중은 61.8%로 다소 낮은 편 ․코로나19 위기 이후 저금리로 변동금리 비중이 확대되어 2022년 2분기 가계의 변동금리 비중은 81.6%을 기록하면서 20년 평균치(73.0%)를 상회 (평균보다 높은 편이라고 다시 확인함)
#총평
퍼스트리퍼블릭은행 파산이슈로 동결 얘기도 있었지만 빠르게 수습되면서 결국 미국 기준금리가 또다시 0.25%포인트 상승했다.