AMM(Auto Memory Management)이란 오라클에서 인스턴스 메모리를 관리하는 가장 간단한 방법이다. 오라클에는 PGA(System Global Area), SGA(Program Global Area) 불리는 메모리 영역이 존재한다. 11g 이상에서 도입한 AMM 관리 기법은 SGA+PGA를 자동으로 관리하는 방식이다. 이때 전체 메모리를 설정하는 memory_max_target, memroy_target 파라미터를 설정해 주어야 하는 데 리눅스 운영체제의 /dev/shm
크기가 최대치가 된다. 리눅스는 기본적으로 전체 메모리의 50%를 ‘/dev/shm’에 할당하는 데 필요한 경우 이 영역을 변경하고 오라클 파라미터를 설정해야 오류가 나지 않는다. CentOS 8, Database 설치 글을 참고하여 필요한 만큼 설정(fstab, size)한다.
AMM 기능을 사용하면 SGA_TARGET, PGA_AGGREGATE_TARGET의 값을 0으로 지정하는 것이 좋다. 0이 아닌 경우 그 값을 최솟값으로 인식하기 때문이다.
su - oracle
sqlplus /nolog
SQL> conn / as sysdba
SQL> show parameter target
# 현재 설정되어 있는 memory_max_target, memory_target,
# pga_aggregate_target, sga_target 값을 확인한다.
빅데이터, IoT, 인공지능과 같은 용어를 요즘은 주변에서 쉽게 볼 수 있다. 데이터베이스 분야도 전통적인 RDBMS뿐만 아니라 NoSQL, 메모리 데이터베이스, 시계열 데이터베이스 또한 관심 분야로 떠오르고 있다. 이제는 단순한 개념적 학습이 아닌 실무에서 방대한 데이터 처리를 실시간으로 처리해야 하는 상황에 직면한 것이다. 참고로 국산 시계열 데이터베이스인 마크베이스(MACHBASE)를 살펴볼 필요가 있는데 초당 104만 건 정도의 데이터를 처리할 수 있다고 한다.
In-Memory OLTP는 SQL Server에서 트랜잭션 처리, 데이터 로드 및 일시적인 데이터 시나리오의 성능 최적화하기 위해 사용할 수 있는 뛰어난 기술이다(In-Memory OLTP is the premier technology available in SQL Server and SQL Database for optimizing performance of transaction processing, data ingestion, data load, and transient data scenarios). 전통 방식인 디스크 테이블보다 실제로 5~30배의 성능 향상이 있다고 한다.
아래의 글은 Channel9에서 동영상 강좌로 소개한 SQL Server 2016 In-Memory OLTP를 정리한 것이다. 여기에 필요한 몇 가지 관련 내용을 추가하였다.
업무용 프로그램을 개발하기 위한(개인 프로젝트, 테스트 용도) 환경 구성 중 하나로 데이터베이스 구성은 VirtualBox에 CentOS + Oracle, SQL Server, MySQL, MongoDB, PostgreSQL를 설치하는 데 이때에 필요한 설치과정을 필수적인 부분만 정리하여 보았다. CentOS 버전은 8.1이며 VirtualBox에 기본값으로 CentOS는 설치가 되었다고 가정한다.
systemctl set-default multi-user.target #runlevel 3
vi /etc/sysconfig/selinux
SELINUX=disabled #enforcing
vi /etc/fstab
tmpfs /dev/shm tmpfs size=6G 0 0 #추가(메모리8G)
firewall-cmd --permanent --add-port=1433/tcp
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
firewall-cmd --list-all
reboot
# 기타
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='xxx.xxx.xxx.xxx/24' reject"
firewall-cmd --permanent --remove-port=27017/tcp
# 데몬설정확인
systemctl list-unit-files | grep -i enabled
systemctl disable(enable) mssql-server.service
netstat -tnlp