본 포스트는 2024년 Google Study Jam을 공부하면서 개인적으로 내용을 정리한 포스트 입니다.
Task 1. Create Baseline Dataset for Testing the Columnar Engine
1. Navigation menu > Databases > AlloyDB for PostgreSQL > Cluster > lab-cluster > lab-instance에서 Private IP를 카피한다.
Columnar Engine의 기능을 평가하려면 성능을 측정할 상당한 크기의 데이터 세트가 필요하다.
postgreSQL의 pgbench를 사용하여 Columnar Engine을 평가할 합성 데이터 세트를 생성한다.
2. Navigation menu > Compute Engine > VM Instances > alloydb-client > Connect > SSH로 터미널을 열고 다음 명령어를 입력하여 pgbench로 데이터를 만든다.
export ALLOYDB=ALLOYDB_ADDRESS
echo $ALLOYDB > alloydbip.txt
pgbench -h $ALLOYDB -U postgres -i -s 500 -F 90 -n postgres
psql -h $ALLOYDB -U postgres]
select count (*) from pgbench_accounts;
Task 2. Run a Baseline Test
1. alloydb-client 터미널에서 postgreSQL 클라이언트에 접속하고 다음 명령어를 입력하여 쿼리를 실행하여 모든 쿼리 작업에 대한 타이밍을 키고 런타임을 평가한다.
# 쿼리 작업에 대한 타이밍 키기
\timing on
# pgbench_accounts 테이블 전체의 seq 스캔을 수행
SELECT aid, bid, abalance FROM pgbench_accounts WHERE bid < 189 OR abalance > 100 LIMIT 20;
2. 다음 쿼리를 실행해서 제한 없는 쿼리에 대한 설명 계획을 생성한다.
EXPLAIN (ANALYZE,COSTS,SETTINGS,BUFFERS,TIMING,SUMMARY,WAL,VERBOSE)
SELECT count(*) FROM pgbench_accounts WHERE bid < 189 OR abalance > 100;
Task 3. Verify the Database Flag for the Columnar Engine
1. Navigation menu > Databases > AlloyDB for PostgreSQL > Clusters > lab-instance에서 Edit Primary를 클릭한다.
2. Add a database flag를 클릭하고 사용 가능한 플래그 목록에서 google_columnar_engine.enabled 플래그를 확인한다.
Task 4. Set or Verify a Database Extension for the Columnar Engine
1. alloydb-client instance의 터미널에서 postgreSQL 클라이언트에 접속한 후 명령어를 입력한다.
\c postgres # postgreSQL과 연결되어 있는지 확인
\dx # 활성화된 확장 보기
2. 목록에 google_columnar_engine가 나오면 Task5로 건너 뛰고 안나오면 다음 명령어를 입력한다.
CREATE EXTENSION IF NOT EXISTS google_columnar_engine;
\dx # 추가 되었는지 다시 확인
Task 5. Testing the Columnar Engine
1. alloydb-client의 터미널에서 postgreSQL 클라이언트에서 다음 쿼리를 입력해 pgbench_accounts를 컬럼 엔진에 추가한다.
SELECT google_columnar_engine_add('pgbench_accounts');
2. 다음 쿼리를 입력해 Columnar Engine의 영향을 확인한다.
💥 값은 샘플 출력의 값과 유사해야 하나 데이터 생성의 무작위적 특성으로 인해 다를 것이다.
EXPLAIN (ANALYZE,COSTS,SETTINGS,BUFFERS,TIMING,SUMMARY,WAL,VERBOSE)
SELECT count(*) FROM pgbench_accounts WHERE bid < 189 OR abalance > 100;
Execution Time Pre-Columnar Engine과 Post-Columnar Engine의 차이는 9285.705ms, 약 9초로 시간이 단축된 것을 확인할 수 있다.