본문 바로가기

SingleStore97

[Support Bulletin 01] - SingleStore Service Autostart 실패 안녕하세요 에이플랫폼 입니다.이번에 처음 선보이는 Support Bulletin 시리즈입니다.고객 지원 사례와 관련 정보들을 모아 시리즈로 작성하게 되었습니다. 발행은 비정기적으로 발행될 예정입니다.아무래도 공개가 가능한 정보들로 글을 작성해야 하기 때문에...그래도 앞으로 꾸준히 발행될 예정이니 많은 관심 가져주시면 감사하겠습니다.📌개요SingleStore 설치 시 대부분의 경우 일시적인 Node Failure 에 대비하기 위해 자동 시작하도록 설정하는 것을 권장하고 있습니다. 예를 들어 다음과 같은 명령어를 사용하여 모든 Aggregator 및 Leaf 노드에서 SingleStore Daemon 을 자동 시작하게 설정합니다.$ sdb-admin enable-nodes-autostart --host .. 2025. 1. 13.
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 returnselect row_number() over () as rn from table(create_array(n):>array(bigint)); 이제 정렬이 필요없도록 튜닝을 해보겠습니다.먼저 to_ar.. 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 를 추가로 설치했습니다.​​🎯 OracleOracle XE 21c는 SGA+PGA 합쳐서 2GB 를 넘지 못하도록 제약이 걸려 있습니다. 따라서 불가피하게 PGA가 3000MB 로 설정되어 있는 Autonomous Database 에서도 같이 테.. 2024. 1. 12.
Row Generation - SingleStore, Oracle, MySQL PostgreSQL 🎯 Row Generation​이번 포스트에서는 임의의 n개 row 를 생성하는 방법을 알아 보겠습니다.​🎯 Oracle​Oracle 에서는 Hierarchical Query 를 이용해서 임의의 row 를 생성합니다. SQL> select rownum from dual connect by level   Recursive With 구문을 이용해서 MySQL 처럼 row 를 생성할 수도 있습니다.​🎯 MySQL​MySQL 8.0 이상에서는 Recursive CTE 를 이용하여 임의의 row 를 생성합니다. with recursive t(n) as ( select 1 as n union all select n+1 as n from t where n    🎯 PostgreSQL​PostgreS.. 2024. 1. 4.
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.zipunzip airport-db.zip mysqlsh 의 loadDump 유틸리티를 이용하여 16 thread.. 2023. 11. 10.
SingleStore Hands-On #1 DB 설치 : SingleStore, PostgreSQL, MySQL 💻 Linux Machine Setup​하나의 장비에 SingleStore, PostgreSQL, MySQL 을 함께 설치할 Linux Server 를 설정합니다.​장비 사양CPU : 8 vCPUMemory: 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) NOPASSWD:AL.. 2023. 11. 2.