RX/XE 팁
XE FAQ 는 제가 XE공홈 '묻고 답하기'에 답변한 내용들 중 일부를 정리한 내용입니다. (대부분이 제가 한 답변이죠)
XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠

제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 불꽃의 포스팅전학생 
출처URL http://zettaisya.egloos.com/2988412 

XE 설치시 기본은 mysql (MyISAM) 이다 

특별히 신경쓰지 않는 한,  아무 생각없이 이를 선택해 설치하기 마련이다.

그런데 자료양이 많아질 경우에는,   테이블단위의 락이냐  행단위의 락이냐가 많은 영향을 줄 수 있다.

행단위로 락을 걸면,  그만큼 서버사양이 좋아야한다고는 하나  (CPU 와 RAM)

테이블단위로는 어느 정도 자료양 이상에서는 서버사양이 좋아도 해결에 한계가 있기에

결국, 규모가 있는 커뮤니티를 지향하는 경우는,  결국  서버의 사양을 좋게하고,  innoDB로 가는게 맞는듯하다.

 

관련 자세한 정보는 아래글이 좋을듯 싶다. 

글은  http://zettaisya.egloos.com/2988412   에서 퍼왔다. 

 (추가로.. http://lusyd.tistory.com/203  글도 도움이 된다)

 

============================

 

Mysql에서 기본으로 사용되는 스토리지 엔진은 보통 MyISAM다. 전통적으로 많이 사용되어 온 형태로, 데이터 변경이 크게 없고 읽기가 많은 경우-즉 혼자 글을 쓰고 공개하는 블로그 등에서 효율적이며, CPU나 메모리의 성능보다는 스토리지의 성능에 더 영향을 받는다고 한다. 그리고 InnoDB는 트랜잭션이니 뭐니 여러 기능이 추가/향상되어 나온 엔진으로, CPU와 메모리에 비례해 성능이 향상되며 읽고 쓰기가 많은 경우에 유용하다. 가장 큰 차이는 트랜잭션의 지원 유무지만, xe를 쓰는 우리에게 있어서 가장 중요한 차이점은 DB에서 데이터를 변경할 경우 테이블 단위로 락을 거는 MyISAM과 달리 행 단위(row-Level)로 락을 건다는 것.

사실 제로보드4 시절엔 DB 상태가 어쩌고에 관심도 없었고, 그런 거 몰라도 빠릿빠릿하게 잘 굴러가던 게 제로보드라 신경 쓸 필요도 없었다. 그렇다 보니 제로보드의 게시물/덧글 db가 어떻게 되어있었는지는 모르겠는데, 최근 xe의 속도를 이야기하며 가장 문제시되는 부분이 게시물/덧글을 xe_comments와 xe_documents 테이블 하나씩에 그대로 전부 때려박는다는 것이다. 그래서 앞서 말한 MyISAM의 table-level lock, 테이블 단위 락이 여기서 문제가 된다. DB에서 테이블의 데이터를 변경하는 경우, 동시에 다른 사용자가 해당 데이터를 변경하거나 해서 오류가 발생하지 않도록 데이터를 잠그게 되는데, xe는 모든 걸 하나의 테이블에 때려박아둔 덕분에 이 큰 테이블 자체가 잠겨버리게 된다. 대다수의 세션이 Lock wait 상태에 빠질 수 있는 것. 실제로 게시물도 유동인구도 몇 안되는 절대넷마져도 간간히 접속이 끔찍하게 늦어지는 상태였고, 실제 슬로우 쿼리 로그도 xe_documents의 겨우 게시판 두 개에 쿼리 날리는 와중에 걸리는 부하였다.

이를 해결하기 위해 게시물 카운트를 자른다거나 무슨 캐시를 먹인다거나 여러 복잡한 방법도 시도도 많은 모양인데, 웹이고 디비고 뭐고 지식이 전무하다 보니 봐도 쫓아갈 수가 없었고, 가장 간단해보이는 해결책이 DB엔진을 InnoDB로 변경하는 것이었다. InnoDB는 데이터 변경에 대해 테이블 자체를 잠궈버리는 MyISAM과 달리 row-Level, 행 단위로만 데이터를 잠그기 때문에 테이블에 데이터 변경이 일어나고 있어도 동시에 다른 데이터 액세스가 가능하다. 물론 그 덕분에 처리해야 할 양이 상당히 늘어나는 게 부담이긴 하지만, 위젯 출석 로또 글쓰기 등 다양한 쓰기 활동이 동시에 일어나는 상황에서는 훨씬 유용하다고 생각한다. 게다가 그렇게 큰 규모도 아니고.

사용하던 MySIAM 테이블을 InnoDB로 변경하는 건 간단했다. 혹시를 대비해 일단 디비 전체를 백업해두고, phpmyadmin의 쿼리 메뉴에서

alter table 테이블명 type=InnoDB;
을 날려서 변경했다. 그리고 xe의 디비 설정도 수정해야 한다. /files/config/db.config.php 를 열어서
$db_info->master_db = array('db_type' => 'mysql_innodb','db_port' => '3306','db_hostname' => 'localhost','db_password' => '암호','db_database' => '이름','db_userid' => '이름','db_table_prefix' => 'xe_');
$db_info->slave_db = array(array('db_type' => 'mysql_innodb','db_port' => '3306','db_hostname' => 'localhost','db_password' => '암호','db_database' => '이름','db_userid' => '이름','db_table_prefix' => 'xe_'));
db_type 부분도 mysql_innodb로 수정한다.


좀 지켜봐야 알겠지만, 지금 당장은 꽤 빠른 듯한 착각이 좀 든다. 아참, 내부 게시판을 포함해 30~40MB 남짓했던 걸로 기억하는 DB 용량이 엔진 변경 후 갑자기 90MB 가까이 뛰어 깜짝 놀랐는데, InnoDB의 특성이라는 것 같다. 약 2배 정도 몸집이 불어난다.
전체 695건
번호 카테고리 제목 출처 등록일 조회
공지 XE 기능개선 XE 1.11.18 이후 버전의 익명 수정 버그 수정법 xetown  2023.10.07 3205
공지 XE 기능개선 XE 1.11.14 보안패치 - 타인의 쪽지 내용을 확인할 수 있는 버그 패치방법 xetown  2023.10.03 3271
공지 XE 기능개선 XE 1.11.6 이후 보안배치 #4 file rhymix  2022.07.05 3439
공지 1.11.6 XE 1.11.6 이후 보안배치 #3 rhymix  2022.04.02 3385
공지 1.11.6 XE 1.11.6 이후 보안배치 #1 xetown  2021.06.22 3781
공지 1.11.6 XE 1.11.6 이하 에서 공개댓글을 비밀댓글로 변경시 생길 수 있는 오류 수정법 sejin7940  2021.01.10 3706
공지 XE 기능개선 XE 1.11.4 이후에서 파일 업로드시 정상 작동 안 하는 현상 수정법 XE github  2019.04.02 6463
공지 XE 기능개선 php 7.1 환경에서 XE 오류 나는 경우 확인할 사항 sejin7940  2018.07.11 6383
공지 유용정보 php7.2 환경에서 XE 오류가 생기는 경우 - Object 클래스 변경 필요 XE Github  2017.11.27 9960
공지 XE 기능개선 XE 1.8.30 이하에서 반드시 수정해주셔야하는 부분입니다. XE 1.8.31  2017.02.26 7167
공지 1.8.18 XE 1.8.18 에서 사용시 반드시 수정해야할 사항들 ( XE 1.8.20 이후에서는 수정 불필요 ) xetown  2016.04.03 26293
공지 XE 기능개선 XE 1.8.12 이후부터 proc controller 일부가 작동 안 할 경우 확인할 부분 [1] XE  2015.10.16 26204
695 유용정보 구글 애드센스 광고가 없을때 해당 영역 숨기려면 sejin7940  2024.11.19 0
694 라이믹스 selectbox 형태를 사용시 빈값 (공백) 을 제일 앞에 추가하고 사용자정의 이름이 기본으로 출력되게 하려면 sejin7940  2024.11.06 0
693 라이믹스 라이믹스 DB 및 쿼리 query 와 XML 문법 안내 rhymix  2024.11.09 1
692 라이믹스 게시판 검색어가 40자로 제한되어있음. 이를 늘리려면 sejin7940  2024.10.25 8
691 라이믹스 라이믹스에서 글 복사, 이동, 휴지통 이동, 삭제 등시 쪽지 발송 안 되도록 sejin7940  2024.10.25 10
690 유용정보 "스팸방지 CAPTCHA 서버와 통신하는 도중 오류가 발생했습니다." 라는 에러가 뜨는 경우 sejin7940  2024.10.14 16
689 XE 기능개선 XE 1.8.3 미만에서 우리메일 ( ggmailing ) 연결방법 XE  2024.07.06 49
688 XE 기능개선 스케치북에서 임시저장 후 불러오기시 상태(공개,비밀글) 값이 선택 안 되는 현상 수정법 sejin7940  2024.05.07 53
687 유용정보 웹푸시 등을 사용할 경우 알림이 24개까지 누적이 되면 더 이상 알림이 오지 않는 현상 samsung  2024.05.14 69
686 유용정보 윈도우 화면 분할 기능 끄기 위시랜  2024.05.24 70
685 유용정보 정규식으로 img 테그만 제거 its me  2024.04.13 72
684 유용정보 css, js 파일 수정 후 적용 안될 때 jurin.log  2024.05.14 74
683 유용정보 calc() - 속성값을 사칙연산으로 정할 수 있게 하는 함수 사용시 주의할 점 sejin7940  2024.02.12 90
682 유용정보 스케치북 스킨에서 모바일에서 view 화면에서 사진 위에서 스크롤이 안 되는 현상이 발생할때 sejin7940  2024.02.21 91
681 유용정보 XE에서 대표 썸네일 및 파비콘 등록 관련하여 sejin7940  2024.05.14 91
680 XE 기능개선 글등록 후 페이지 이동되기 전에 alert 이나 특정한 행위를 하고픈 경우.. sejin7940  2024.02.04 92
679 유용정보 cdn 이 오류날때 임시 우회 방법 xetown  2024.05.03 92
678 유용정보 php 버전이 낮을 경우 php 서버 업데이트를 반드시 해야하는 이유 sejin7940  2024.05.13 93
677 다른 XE자료들 출석부(attendance) 모듈에서 특정 유저들이 출석 불가능한 경우 오류 수정법 sejin7940  2021.03.17 117
676 XE FAQ 게시판에서 등록일 기준 검색은 없나요? sejin7940  2023.03.31 121
XE Login