BACKEND/Database(23)
-
Bulk UPSERT 성능 테스트 - Spring
본 포스팅의 목표는 Spring - Mabatis 에서 ON DUPLICATE KEY UPDATE를 이용한 대량의 데이터를 추가/업데이트하는 것입니다. 안녕하세요. 이번 포스팅은 대량의 데이터를 업데이트할 때 효과적인 두 번째 방법 소개하고자 합니다. MySQL 이나 MariaDB에서 INSERT와 UPDATE를 여러 개를 한 번에 실행할 수 있는 ON DUPLICATE KEY UPDATE 구문입니다. 테스트를 통해 어느정도의 시간이 걸리는지를 확인해보겠습니다. 첫 번째 방법은 지난 포스팅에서 다룬 MySQL의 Temporary Table를 사용하는 것이었는데요. Temporary Table과의 속도 비교도 같이 진행할 예정입니다. ON DUPLICATE KEY UPDATE를 이용한 UPSERT는 MyB..
2022.07.13 -
Bulk Update, Temporary Table 성능 테스트 - Spring
Spring - Mabatis에서 temporary 테이블을 이용한 대량의 데이터를 업데이트하는 것이 본 포스팅의 목표입니다. 안녕하세요. 대량의 데이터를 업데이트할 때 효과적인 방법을 소개하고자 합니다. MySQL의 Temporary Table를 사용하는 것인데요. MyBatis에서 Bulk Update를 구현해야 할 때 유용합니다. 테스트를 통해 어느정도의 시간이 걸리는지를 확인할텐데요. 비교를 위해 Temporary Table를 사용한 Bulk Update와여러 줄의 Update 문을 실행했을 때의 속도를 비교합니다. 참고로, 이번 포스팅에 이어 다음 포스팅은 Upsert(ON DUPLICATE KEY UPDATE) 를 테스트 해볼 예정입니다. Update + Insert 시 어떻게 하면 가장 빠를..
2022.07.10 -
MySQL, DATETIME VS TIMESTAMP
MySQL의 날짜 표기 법인 DATE, DATETIME, TIMESTAMP 타입을 이해하고 구분하는 것이 해당 포스팅의 목표입니다. Date Types MySQL에서는 날짜를 표기할 때 DATE, DATETIME, TIMESTAMP 타입을 사용할 수 있습니다. 이 타입들은 어떤 차이가 있을지 알아보도록 합시다. DATE DATETIME TIMESTAMP Format YYYY-MM-DD YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss Desc - 날짜만 표기 - 날짜 및 시간 표기 - 날짜 및 시간 표기 - 기본적으로 NOT NULL - Timezone 기반 Supported 1000-01-01 ~ 9999-12-31 1000-01-01 00:00:00 ~ 9999-12-31 23:..
2022.05.05 -
MySQL Ngram, 제대로 이해하기
MySQL의 fulltext 검색 알고리즘 중, ngram을 이해하고 사용할 줄 알게끔 습득하는 것이 해당 포스팅의 목표입니다. 👜 Ngram? 이전 포스팅에서 Full-Text 검색을 다루었는데요. 이번에는 단어을 파싱하여 검색하는 과정에서 필요한 parser 중 "ngram"에 대해 포스팅하고자 합니다. Ngram의 특징에는 아래 3가지가 있습니다. ✔️ Built-in ngram은 MySQL의 Built-in Parser로써, 다른 기본 제공 서버 플러그인과 마찬가지로 서버가 시작될 때 자동으로 로드됩니다. 즉, 따로 설치할 필요없이 사용할 수 있다는 큰 장점을 가집니다. ✔️ MySQL의 지원 또한 InnoDB 및 MyISAM 엔진을 지원하며, ngram은 중국어, 일본어, 한국어(CJK)를 지원..
2022.04.25 -
MySQL FullText Search, 제대로 이해하기
MySQL의 fulltext search 에 대한 이해와 MATCH AGAINST 사용법을 간단히 알아보는 것이 해당 포스팅의 목표입니다. 후속 포스팅으로 FULLTEXT 검색 파서 중 하나인 "ngram" 사용법에 대해 다룰 때 구문 사용법을 조금 더 자세히 알아볼 예정이며, 해당 포스팅에서는 FullText 기본적인 내용과 활용법에 대해 알아보고자 합니다. Full-Text Searches MySQL을 사용할 때, LIKE 연산을 통한 패턴 일치 검색을 사용하고는 합니다. LIKE 연산을 통해 검색을 하게 되면 인덱스를 통한 검색을 못할 때가 생기곤 하는데요. 이럴 때 고려해볼 수 있는 것이 바로 오늘 다룰 전문 검색, Full-Text 검색입니다. FullText 검색은 단어 또는 구문에 대한 검색..
2022.04.24 -
SQL Execution Plan, 제대로 이해하기
Execution Plan을 읽고 해석할 수 있는 것이 이 포스팅의 목표입니다. 본 포스팅은 사용된 코드나 데이터는 직접 테스트 한 내용으로, 만약 직접 테스트 해보고 싶다면 아래의 내용을 참고해주세요. Mysql Version: 8.0.26 Test DB: employees 테스트 DB는 해당 링크의 'Example Databases > employee data'에서 다운받으실 수 있습니다. 해당 테스트 DB는 아래와 같은 구조로 구성되어 있습니다. Execution Plan? 실행 계획이란, 말 그대로 SQL 문으로 요청한 데이터를 어떻게 불러올 것인지에 관한 계획, 즉 경로를 의미합니다. 지름길을 사용해 데이터를 빠르게 찾아낼 것인지, 지름길이 있어도 멀리 돌아가서 찾을 것인지 미리 확인할 수 있습..
2022.04.17