SQL 튜닝 별거 있겠어...? 라고 호기롭게 리펙토링 작업 시작했다가...
전문 DBA분과 6개월 리펙토링 작업하면서 신세계를 맛봤습니다...
그때 리펙토링하는 서비스가 php + mysql 조합이었는데, pk가 char형으로 되어 있는 신박한(?) 구조였습니다.
그래서 가벼운 마음으로 시작했는데...
Reverse Timestamp방식으로 적재하는 방법과 신박한 SQL 프로시저...(이게 제일 충격이었습니다...프로시저를 그렇게 짜도 돌아가다니!!! 심지어 개발자가 짠거보다 더빠름!!!!!), 주기적인 파티셔닝 프로시저 짜는 정도로... 서비스가 완전히 바뀌었죠.
제가 거기 들어가서 한게 innodb 관련설정이랑 mysql cluster 구성한거 밖에 -_- 엔지니어링 적인것과 서비스 리펙토링만 하고 끝났습니다...
인력이 4명이서 6개월동안 열심히 작업했거든요. 한시적 인력 운영이라 전 6개월 후 바로 나왔습니다만... 그때 당시 만난 DBA님이 참... SQL의 신으로 보일정도로 존경스러웠습니다.
SQL 관련 튜닝은 아무나 하는게 아니더군요...
1시간 봐주고 몇백씩 받던데요... 튜닝 SQL 차이가 성능을 좌우하니까요...
복구도 그렇고 튜닝도 그렇고...
굉장히 유명한 (클리앙에서 가끔 언급되는...) IT 스타트업 회사 2011년도에 DB 리펙토링 한달에 4번 조언해주는데 2천만원 받으셨다고 하더군요.....
DBA가 필요한 작업도 그냥 개발자한테 설계하고 알아서 하라고해서 문제지.... ㅡ.ㅜ
예전이야 분산처리가 힘든 시절이었지만...
reverse timestamp로 쌓는 것만 보더라도... 약간 신박하다고 생각했는데요. timestamp는 2038년까지만 쓸 수 있는데 그걸 이용해서 natural order와 같이 timestamp order index를 태우기 위해 2038년 xx월 xx일 - 현재 시간 = reverse timestamp입니다. 시간이 흐르면 흐를수록 값이 작아지고 1970년에 수렴하는데, desc order를 위해 (최신 시간 얻기) indexing을 안줘도 되고 네츄럴 오더기 때문에 성능이 잘나옵니다...
단점은 2038년이후로는 이 서비스가 운영이 안되겠네요 ㅋㅋㅋㅋㅋ
예전에 대학생 때, 시멘트 회사 알바하는데 어느날보니 시멘트 굽는 기계 장치를 천으로 다 가려두었더군요...
독일에서 온 기술자들이 내부에 벽돌(?) 쌓고 있는 중인데 노하우 보장 차원에서 그렇게 한다는데...
수십억 하는 가격에 정말 놀랐었는데...