본문 바로가기

DBMS17

Row Generation 튜닝#1 - SingleStore ※ 테스트 장비 사양 - 8vCPU, 16GB ​ 이전 포스트에서 SingleStore 의 Row Generation 은 7억건에서 메모리 부족 에러가 발생했습니다. 그 이유는 create_array 및 table 로 변환한 모든 row 를 대상으로 row_number() 함수로 정렬을 수행하기 때문에 부가적인 메모리가 더 필요하기 때문입니다. 물론 정렬 작업 때문에 시간도 조금 더 필요합니다. create or replace function gen_rows(n bigint) returns table as return select row_number() over () as rn from table(create_array(n):>array(bigint)); 이제 정렬이 필요없도록 튜닝을 해보겠습니다. 먼저.. 2024. 1. 18.
Row Generation 성능 비교 - SingleStore, Oracle, MySQL, PostgreSQL 🎯 개요 ​이전 포스트에서 Row Generation 방법을 소개해 드렸습니다. 2024.01.04 - [연구노트] - Row Generation - SingleStore, Oracle, MySQL PostgreSQL 이번 포스트에서는 각 DB 마다 Row Generation 성능을 간단하게 비교하도록 하겠습니다. 비교 테스트에 사용한 장비는 8vCPU, 16GB 의 사양으로 Hands-On 테스트에 사용했던 장비를 그대로 사용하였고 여기에 Oracle XE 21c 를 추가로 설치했습니다. ​ ​ 🎯 Oracle Oracle XE 21c는 SGA+PGA 합쳐서 2GB 를 넘지 못하도록 제약이 걸려 있습니다. 따라서 불가피하게 PGA가 3000MB 로 설정되어 있는 Autonomous Database 에서.. 2024. 1. 12.
SingleStore Hands-On #5 Online Scale Out/In 🎯 개요 SingleStore 는 분산(Distributed) 데이터베이스로 Shared Nothing 구조를 가지고 있습니다. 따라서 현재 시스템보다 더 높은 성능이 요구될 때 쉽게 수평 확장(Scale Out)할 수 있는 것이 큰 장점입니다. ​ 이번 테스트에서는 k6 성능테스트 툴로 Data API 를 이용해 트랜잭션이 실행되는 도중에 온라인으로 수평 확장(Scale Out) 및 축소(Scale In) 작업을 수행하도록 하겠습니다. ​ 실제 SingleStore 입장에서는 Leaf Node 를 추가/삭제하는 작업을 수행합니다. ​ 🎯 gnuplot 설치 SingleStore 클러스터가 온라인 상태에서 Leaf 노드를 추가/삭제할 동안 성능의 변화를 파악하기 위해 k6 실행 결과를 csv 로 로깅할 .. 2023. 12. 21.
SingleStore Hands-On #4 Data API 🎯 개요 RDBMS 를 사용하는 고전적인 프로그래밍 방식은 프로그램 실행 초기에 커넥션(connection) 을 열고 특정 SQL 을 처리하기 위한 커서(cursor) 를 생성한 다음 커서의 실행 결과를 페치(fetch) 하여 처리하고 커넥션을 닫는 순서로 작성되곤 했습니다. ​ 문제는 커넥션을 맺거나 끊는 작업이 DBMS 입장에서는 상당히 무겁고 큰 비용이 발생하는 작업이라는 것입니다. 그래서 보통 일정 갯수이상의 커넥션을 미들웨어나 WAS 등에 커넥션 풀(Connection Pool) 형태로 만들어 두고 필요할 때마다 커넥션을 열고 닫는 것이 아니라 커넥션 풀에서 커넥션을 획득/반납하게 합니다. RDBMS 와 WAS 등의 미들웨어간에는 항상 커넥션이 유지되기 때문에 커넥션 생성 및 제거에 시스템 자원.. 2023. 11. 23.
SingleStore Hands-On #3 동일 Query 성능 비교 - PostgreSQL, MySQL 🎯 개요 이전 포스트에서 CC By 4.0 License 를 가지고 있는 Stefan Proell, Eva Zangerle, Wolfgang Gassler 가 만든 Flughafen DB가 원본인 airportdb 를 로딩했습니다. 2023.11.10 - [연구노트] - SingleStore Hands-On #2 데이터 로딩 이제 설치한 각 데이터베이스 별로 동일한 Query 를 수행하여 성능을 비교해 보겠습니다. 각 Query 는 Parsing 및 Buffer Cache miss 등의 성능상 오버헤드를 제거하고자 두 번씩 연속으로 수행하고 두번째 수행 결과를 확인합니다. ​ Query #1, Query #3, Query #4 는 MySQL Heatwave Quickstart Page 에서 예제로 사용하.. 2023. 11. 17.
SingleStore Hands-On #2 데이터 로딩 🎯 개요 데이터 로딩 테스트를 위해 MySQL Heatwave 에서 예제로 사용하는 airportdb 를 사용하겠습니다. airportdb 는 CC By 4.0 License 를 가지고 있는 Stefan Proell, Eva Zangerle, Wolfgang Gassler 가 만든 Flughafen DB가 원본입니다. ​ 🚘 MySQL Data Loading 먼저 MySQL 에서 airportdb 를 로딩하기 위해 다음 명령어를 수행하여 airport-db.zip 파일을 다운로드하고 압축파일을 풀어 놓습니다. wget https://downloads.mysql.com/docs/airport-db.zip unzip airport-db.zip mysqlsh 의 loadDump 유틸리티를 이용하여 16 thr.. 2023. 11. 10.
SingleStore Hands-On #1 DB 설치 : SingleStore, PostgreSQL, MySQL 💻 Linux Machine Setup ​하나의 장비에 SingleStore, PostgreSQL, MySQL 을 함께 설치할 Linux Server 를 설정합니다. ​ 장비 사양 CPU : 8 vCPU Memory: 16GB (32GB 권장) HDD(SSD) : 70GB 이상 O/S : Red Hat 계열 version 7 (이 문서는 Oracle Linux 7 기준으로 작성되었습니다) sudo 권한 확보 현재 사용하는 계정명은 opc 입니다. 이 계정에 sudo 권한을 설정할 경우 root 계정에서 다음 명령어를 수행합니다. * 이미 sudo 권한이 부여됐다면 이 스텝은 건너 뛸 수 있습니다. # visudo -f /etc/sudoers 가장 아래 라인에 다음 추가 opc ALL=(ALL) NOPAS.. 2023. 11. 2.
SingleStore 디폴트 Data 디렉토리 변경 ■ 개요 SingleStore 를 cluster-in-a-box 형태로 설치하면 디폴트로 /var/lib/memsql 아래에 데이터 및 설정 파일이 위치하게 됩니다. 이 경우 O/S 의 Root 디렉토리가 사용하는 디스크 파티션을 함께 사용하기 때문에 용량 문제가 발생할 수 있습니다. 이번 포스트에서는 설치할 때 Data Directory 를 지정하는 방법과 이미 설치하고 난 뒤에 Data Directory 를 변경하는 방법을 알아보겠습니다. ​ 이 포스트는 다음 글을 참조했습니다. https://support.singlestore.com/hc/en-us/articles/360057955312-Change-default-data-directory-path ​ ■ 설치 시 Directory 지정 설치 과정.. 2023. 10. 26.
SingleStore DB Directory Layout [1] 개요 그동안 SingleStore 를 설치하는 여러 내용들이 있었습니다. 이제부터는 설치된 SingleStore 의 디렉토리 구조와 각종 설정 파일들의 역할을 알아보도록 하겠습니다. 이번 포스트에서 설명할 환경은 Windows10 WSL2 를 기준으로 패키지 관리 프로그램이 디폴트이 설치한 SingleStore 를 기준으로 설명합니다. tarball 로 사용자환경에 맞게 커스텀으로 설치한 환경은 지금 설명과 많이 다릅니다. 설치하는 방법은 아래 링크를 참조하시기 바랍니다. ​https://a-platform.tistory.com/124 Windows 10 WSL2 에 SingleStore 설치 [1] 개요 SingleStore 는 현재 공식적으로 Intel 계열의 Linux Platform 만 지.. 2023. 10. 20.