MariaDB & Galera Cluster 가 생각보다 까다롭네요.
문제가 된 것이...처음 회원 가입을 할 때 10개의 테이블에 insert 을 하게 됩니다. 그 외에 몇 가지 update 도 있는데, 이건 transaction 밖으로 어찌어찌 빼놓은 상태인데,
이 10 개의 insert 을 하다가 deadlock 이 걸립니다. 물론 한 개의 서버에 부하를 주면 괜찮습니다만, 특성상 그리고 Galera Cluster 을 쓰는 목적 대로 write 서버가 죽었을 경우 전체 시스템이 맛이 간다는 이유로 여러 서버에 insert 을 하고 있습니다.
transaction 의 문제는 아닌 것 같고, 순전히 insert 를 다른 서버로 복제하면서 시간이 느려져서 생기는 문제 같습니다.
10개의 테이블을 하나의 테이블로 만드는 제일 하책의 방법과 기준이 되는 테이블 하나를 제외한 초기값 설정을 위한 다른 9 개의 테이블 값을 미리 입력해놓는 중책의 방법을 고민하였습니다만...아무래도 더 좋은 방법이 있지 않을까 고민이 되어 질문 드립니다.
10 개의 테이블은 모두 한 row 씩만 입력되고, UQ(속도 문제가 있을까봐 관계도 다 빼버렸습니다)로 기본키가 연결되며, Redis 로 sequence 을 만들어서 오기 때문에 Table Lock 이 있을거란 생각은 하지 않고 있습니다.
여러 테이블이 최대한 부하 없이 insert 을 할 수 있는 방법이 있을까요?
그리고, 이러한 상황에서 insert(혹은 update)에서 delay 가 생겼을 경우 네트워크 만의 문제일까요? 아니면 SSD 로 된 서버로 교체했을 때 효과를 볼 수 있을까요?
조언 부탁드립니다. |