Mysql 의 경우는 일방문자가 7만명의 사이트에 효과적으로 돌리는 방법을 여러방법을 간구 중이지만.. 여러가지 문제점(트랜젝션, MaxConnection 초과 등)으로 인해 어려움이 여럿있습니다.
이하 존대는 생략합니다.
1) MySQL 동시접속자가 엄청 많은 경우 대처 방법 (방법 제안)
Msql을 DB 2대이상으로 미러링 서비스를 하지 않고, 효과적으로 사용하는 방법.. 만구 제생각.. 아직 테스트는 해 보지 않았습니다.
ㅇ한 서버에 정상적인 mysql을 설치한다.
다른 서버에서는 mysql 설치후 /usr/local/mysql/data 폴더를 지우고, NFS 형태로 물려 정상적인 서버의 /data 로 인식시킨다. NFS(네트워크파일시스템. 이방법은 게 게시판에도 있으니 생략하겠습니다.) 과거에 ln -s 로 소프트링크를 걸어 사용해 본적은 있는데 전혀 무리 없습니다. 이렇게 해두고, 다른 서버의 DB에 접속해서 데이타 커넥션이 정상적으로 되는지 확인한다.
정상적으로 된다면..
대부분 접속자가 많은 사이트에서는 Connection 에러가 발생하기에 Connection만 로드 밸런싱으로 분산시키고, 실제 데이타는 한 서버에서만 담당한다. 필요하다면 정상적인 서버는 미러링 서비스를 붙여 데이타의 안정성을 확보한다...
ㅇ 웹서버의 경우도 이와 같은 방법으로 하게 되면 하나의 프로그램으로 여러대의 서버에 돌릴 수 있지 않을까 하는 생각을 해본다.
2) PostGreSql과 Mysql의 속도 테스트
전제 : 동일한 테이블구조(index, data type)와 동일한 컴퓨터(로컬에서 테스트), 웹페이지 로딩으로 데이타 테스트.. mysql - mysql_connect, pgsql - pg_connect 함수를 이용.
데이타는 100만건으로 테스트
Insert : 100만건을 10000건씩 루프돌리면서 100회 테스트..
10000건을 인서트 하는데 걸리는 시간
mysql : 평균 2.5초, pgsql : 평균 8.5 초
Select : 100만건을 하나씩 셀렉트(index이용)
10000건을 셀렉트하는데 걸리는 시간
mysql : 평균 3.3초, pgsql : 평균 6.5초
update : 100만건을 하나씩 업데이트(index이용)
10000건을 업데이트하는데 걸리는 시간
select와 거의 유사..
테스트는 postGreSql 8.0.3버전으로 했습니다.
속도차이가 너무나네요.. 거의 3~4배정도의 차이가 나고..
select count(*) tbl_test ; // 데이타 100건 있을 경우
mysql : 0.03초
postgresql : 6초 가까이..ㅡ.ㅡ
PostGreSql을 생각중인 분들은 참고하세요.
출처 : PHP-SCHOOL
var viewer_image_url = "http://blogimgs.naver.com/blog20/blog/layout_photo/viewer/";