사이트 속도 관련 질문입니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
사이트 속도 관련 질문입니다.

QA

사이트 속도 관련 질문입니다.

본문

사이트 속도가 너무 느려서 하나하나 타임체크를 해본결과

 

board.php 이부분에서 상당히 느려지더라구요

 

그래서 board.php 에 중간중간 타임체크를 해본결과

 

    $is_seometa = 'view'; //SEO
    $g5['title'] = strip_tags(conv_subject($write['wr_subject'], 255))." > ".((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']);
} else {
    if ($member['mb_level'] < $board['bo_list_level']) {
        if ($member['mb_id'])
            alert(aslang('alert', 'is_bo_list1'), G5_URL); //목록을 볼 권한이 없습니다.
        else
            alert(aslang('alert', 'is_bo_list2'), G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(G5_BBS_URL.'/board.php?bo_table='.$bo_table.($qstr?'&':''))); //목록을 볼 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오. // 2023.06.19 링크 오류 수정
    }
 

이부분부터 느려지는것을 확인하였습니다. 일단 제가 초보라서 이부분을 주석처리한다음에 

작동해봤지만 게시글이 느린것은 똑같았고 일반 회원이라면 게시글에 아예 접근을 못하더라구요

 

이부분을 빠르게 하려면 어떻게 해야할까요?

 

대략 페이지를 볼 권한 문제로 보여지는데 이에 해결책을 못찾고 있습니다.

이 질문에 댓글 쓰기 :

답변 1

인덱스 추가 설정을 한번 해보세요, 물론 하기전 브라우저 캐싱 해주시고요, 그래도 이상하다싶으면 , 인덱스 추가 설정 해주세요

인덱스 추가 설정을 할줄을 모르겠습니다..
그누보드에 게시판 인덱스 설정을 살펴보고 해보면 에러가 나거나 아무런 반응이 없고
현재 구글링으로 찾아보고 있긴한데 그누보드에 딱 맞는 해결책은 안나오고 있는데요..
혹시 힌트를 좀 얻을 수 있을까요?
어떻게 검색을 한다던지 그누보드에서 무엇을 검색하면 되는지요

일단 보드쪽에서 느림의 미학이 찾아왓군요 네 해결해 드리겠씁니다.
 문제가있다면 다음과 같이 추가 해주면됩니다.

ALTER TABLE g5_board ADD INDEX idx_bo_subject(bo_subject);

만약에 이래도 해결이 않된다면..
음...............
각계시판 마다 추구해 볼수 있습니다.
예를 들어g5_write_test 이런 게시판이 만들어 져있다면 다음과 같이 추가 해볼수 있습니다.
여기서 중요한점은 wr_datetime 입니다. 기존 데이타형식과 다를수가 있으므로 백업을 먼저 하시고 진행해 주세요

그리고 사실 대부분 기본적으로 인덱스를 추가 적용해준다면 데이타 타임 datetime 부분을 인덱스 해주므로써 해결을 할것에요..이게 올바르긴 합니다. 그렇나 님같은경우에는 모두다 해보세요
게시판 하나 테스트 해보시고.. 이게 맞다라고하면 남어지 게시판도 해주세요

ALTER TABLE `g5_write_test`
ADD INDEX `wr_id` (`wr_id`),
ADD INDEX `wr_num` (`wr_num`),
ADD INDEX `mb_id` (`mb_id`),
ADD INDEX `wr_datetime` (`wr_datetime`);

phpMyAdmin 쓰지않으신가요 ? 독립 서버인데 ;;;쓰셔야죠;;;

네 그리고 터미널에서 직접 실행 또한 똑같이 하면됩니다. 해당 데이타 베이스 테이블로 이동후 실행해주셔야 합니다. 힘드시면 도와 드리겠습니다. 데이타 베이스 접속 정보를 쪽지로 남겨주세요

아직 새벽이라 사람들이 들어오고 나서 봐야겠지만 체감상은 상당히 빨리진듯한 느낌입니다!!
너무 감사드립니다 정말 어떻게 표현해야 할지 모르겠지만 정말 진심으로 감사드립니다..ㅠㅠ

웅프님 정말 감사드립니다!!

죄송하지만..ㅠ 한가지 더 여쭤보고 싶은게요 인덱스를 하게 되면

phpmyadmin 에 g5_board 에서 구조를 선택하면 "이름","종류","데이터정렬방식" 이런식으로 되어 있잖아요 여기서 종류가 index로 변경되어야 하나요??

이전에 찾아봤을때 게시판 인덱스를 할경우 phpmyadmin 에서 종류가 인덱스로 변경되어 있더라구요

네 맞습니다. 열의종류는 인덱스 입니다.
해당 열이 인덱스로 설정되어 있음을 나타낸다는거죠 이에 반응해 데이터베이스 성능을 향상시키고 쿼리 실행 속도를 최적화 한다는거구요

이름 종류 데이터정렬방식 보기 Null 기본값
1 bo_table varchar(20) utf8_general_ci 아니오





2 gr_id varchar(255) utf8_general_ci 아니오





3 bo_subject varchar(255) utf8_general_ci 아니오





4 bo_mobile_subject varchar(255) utf8_general_ci 아니오





5 bo_device enum('both', 'pc', 'mobile') utf8_general_ci 아니오





6 bo_admin varchar(255) utf8_general_ci 아니오





7 bo_list_level tinyint(4) 아니오





8 bo_read_level tinyint(4) 아니오





9 bo_write_level tinyint(4) 아니오





10 bo_reply_level tinyint(4) 아니오





11 bo_comment_level tinyint(4) 아니오





12 bo_upload_level tinyint(4) 아니오





13 bo_download_level tinyint(4) 아니오





14 bo_html_level tinyint(4) 아니오





15 bo_link_level tinyint(4) 아니오





16 bo_count_delete tinyint(4) 아니오





17 bo_count_modify tinyint(4) 아니오





18 bo_read_point int(11) 아니오





19 bo_write_point int(11) 아니오





20 bo_comment_point int(11) 아니오





21 bo_download_point int(11) 아니오





22 bo_use_category tinyint(4) 아니오





23 bo_category_list text utf8_general_ci 아니오





24 bo_use_sideview tinyint(4) 아니오





25 bo_use_file_content tinyint(4) 아니오





26 bo_use_secret tinyint(4) 아니오





27 bo_use_dhtml_editor tinyint(4) 아니오





28 bo_use_rss_view tinyint(4) 아니오





29 bo_use_good tinyint(4) 아니오





30 bo_use_nogood tinyint(4) 아니오





31 bo_use_name tinyint(4) 아니오





32 bo_use_signature tinyint(4) 아니오





33 bo_use_ip_view tinyint(4) 아니오





34 bo_use_list_view tinyint(4) 아니오





35 bo_use_list_file tinyint(4) 아니오





36 bo_use_list_content tinyint(4) 아니오





37 bo_table_width int(11) 아니오





38 bo_subject_len int(11) 아니오





39 bo_mobile_subject_len int(11) 아니오





40 bo_page_rows int(11) 아니오





41 bo_mobile_page_rows int(11) 아니오





42 bo_new int(11) 아니오





43 bo_hot int(11) 아니오





44 bo_image_width int(11) 아니오





45 bo_skin varchar(255) utf8_general_ci 아니오





46 bo_mobile_skin varchar(255) utf8_general_ci 아니오





47 bo_include_head varchar(255) utf8_general_ci 아니오





48 bo_include_tail varchar(255) utf8_general_ci 아니오





49 bo_content_head text utf8_general_ci 아니오





50 bo_mobile_content_head text utf8_general_ci 아니오





51 bo_content_tail text utf8_general_ci 아니오





52 bo_mobile_content_tail text utf8_general_ci 아니오





53 bo_insert_content text utf8_general_ci 아니오





54 bo_gallery_cols int(11) 아니오





55 bo_gallery_width int(11) 아니오





56 bo_gallery_height int(11) 아니오





57 bo_mobile_gallery_width int(11) 아니오





58 bo_mobile_gallery_height int(11) 아니오





59 bo_upload_size int(11) 아니오





60 bo_reply_order tinyint(4) 아니오





61 bo_use_search tinyint(4) 아니오





62 bo_order int(11) 아니오





63 bo_count_write int(11) 아니오





64 bo_count_comment int(11) 아니오





65 bo_write_min int(11) 아니오





66 bo_write_max int(11) 아니오





67 bo_comment_min int(11) 아니오





68 bo_comment_max int(11) 아니오





69 bo_notice text utf8_general_ci 아니오





70 bo_upload_count tinyint(4) 아니오





71 bo_use_email tinyint(4) 아니오





72 bo_use_cert enum('', 'cert', 'adult', 'hp-cert', 'hp-adult') utf8_general_ci 아니오





73 bo_use_sns tinyint(4) 아니오

위는 phpmyadmin 에서 g5_board 입니다. 아 이미지로 올리려고 했는데 저는 이미지 업로드가 제한되어 있다고 나와서요..ㅠㅠ

저부분에서 인덱스로 변경하고 싶은게 있다면 이름을 넣어주면 되는건가요?

ALTER TABLE `bo_list_level` 이런식으로..?

그리고 저희가 회원들이 포인트며 레벨이 모두 다 다르기 때문에 이부분도 많이 잡아 먹을듯해서

그런 부분 들도 인덱스로 하고 싶구요

그리고 종류에는 인덱스로 변한게 없는데 제가 이상한곳을 확인하고 있는건가요?

사실 보드는 않해줘도 될것 같은데요?

구지 해야한다면?
ALTER TABLE g5_board ADD INDEX idx_bo_subject(bo_subject);
또는
ALTER TABLE `g5_board` ADD INDEX `idx_bo_subject` (`bo_subject`);
이렇게 하면되구 둘중에 되는걸로 하면됩니다.

그렇나 현재 문제 없으면 구지 할필요없습니다. 무족건  인덱스 설정해주는게 좋은것은 아니닌깐욤

너무 시간을 많이 뺏는것 같아서 죄송하지만..ㅠㅠ
아침이 되면서 물론 어제보다는 빨라졌지만 그래도 6~7초정도는 나와서요...ㅠㅠ
어제는 16~20초 사이였다가 엄청 빨라지긴 했지만 더 빠르게 하고 싶어서요..
아무래도 요소가 많다보니 다 인덱스를 걸고 싶긴한데 이전에 봤을때는 인덱스를 다 건다고 해서 좋은게 아니라고 해서요

그리고 보통 phpmyadmin에서 게시판을 보게 되면 이름이 g5_write_aaa 이런식으로 나와야하는것 아닌가요? 저는 왜 다 board.php 안에 게시판들이 들어있는건지 ㅎㅎ뭐가 잘못된거 같기도 하네요

네 aaa 테이블이 있습니다. 보드테이블이 아닙니다 그냥 부모일뿐입니다.보드테이블키를 받아 상호 작용을 한다는뜻이죠 페이지2페이지일꺼에요 2페이지에보시면 새로 게시판만들어진 테이블이 있을겁니다.

그리고 참고로

인덱스는 데이터의 변경이 발생할 때 오버헤드를 유발합니다. 따라서 자주 갱신되는 테이블의 경우 신중하게 고려해야 합니다.

INSERT, UPDATE, DELETE에 대한 영향을 고려해야한다는겁니다.

웅프님..ㅠㅠ 어제 제가 잘못한 부분이 있었습니다.

ALTER TABLE `g5_write_(나의게시판명)`
ADD INDEX `wr_id` (`wr_id`),
ADD INDEX `wr_num` (`wr_num`),
ADD INDEX `mb_id` (`mb_id`),
ADD INDEX `wr_datetime` (`wr_datetime`);

실행했을때 ok가 떠서 된건줄 알았는데

이게 나중에 다시 번역해보니 결과값이 없다고 리턴했다는 뜻이었더라구요...

ㅠㅠ

즉 인덱스가 적용되지 않았더라구요
phpmyadmin에서도 해봤지만 안된네요..

현재 찾고 있습니다!!

내보내기를 했을때

-- 테이블의 인덱스 `g5_write_xdf`
--
ALTER TABLE `g5_write_xdf`
  ADD PRIMARY KEY (`wr_id`),
  ADD KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
  ADD KEY `wr_is_comment` (`wr_is_comment`,`wr_id`),
  ADD KEY `wr_subject` (`wr_subject`),
  ADD KEY `wr_subject_2` (`wr_subject`),
  ADD KEY `wr_subject_3` (`wr_subject`),
  ADD KEY `wr_subject_4` (`wr_subject`),
  ADD KEY `wr_subject_5` (`wr_subject`),
  ADD KEY `wr_subject_6` (`wr_subject`),
  ADD KEY `wr_id` (`wr_id`),
  ADD KEY `wr_num` (`wr_num`),
  ADD KEY `mb_id` (`mb_id`),
  ADD KEY `wr_datetime` (`wr_datetime`),
  ADD KEY `wr_num_2` (`wr_num`),
  ADD KEY `wr_reply` (`wr_reply`);


이런 부분이 있는데요 이게 적용이 된건가요?

그 위에 있는 부분

-- 테이블 구조 `g5_write_xdf`
--

CREATE TABLE IF NOT EXISTS `g5_write_xdf` (
  `wr_subject` varchar(255) NOT NULL,
  `wr_content` text NOT NULL,

여기에는 varchar(255) 이렇게 뜨는데요

네 추가된거잖아요 ㅎㅎ;;

그런데 흠............
엄청난 인덱스 키를 가져군요...놀랍넹됴 ;;=--;; 그렇게까지 ...모든 필드는 다 추가 한듯 한데요;; 문제가잇어보이는뎅;;;

ALTER TABLE `g5_write_test`
  ADD PRIMARY KEY (`wr_id`),
  ADD KEY `wr_seo_title` (`wr_seo_title`),
  ADD KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
  ADD KEY `wr_is_comment` (`wr_is_comment`,`wr_id`),
  ADD KEY `wr_id` (`wr_id`),
  ADD KEY `wr_num` (`wr_num`),
  ADD KEY `mb_id` (`mb_id`),
  ADD KEY `wr_datetime` (`wr_datetime`);

이정도만 되어도 불안한뎅;;; 흠..........ㅋ

기본만 하세요 문제되는 테이블 부분만 테이타타임쪽이 일반적으로 합니다. 난 책임은 못집니다. 문제적 생길경우 나 탓하지마세요 백업은 해두시고 하는거죠?

디비쪽은 그렇게만 해서 속도 차이가 나온다면 거기서 멈추세요..더할게 없습니다.

네트웍을 점검하세요 서버쪽하구요

분명
인덱스는 데이터의 변경이 발생할 때 오버헤드를 유발할수가 있다고 했습니다.
따라서 자주 갱신되는 테이블의 경우 신중하게 고려해야 한다고 했구요.

INSERT, UPDATE, DELETE에 대한 영향을 고려해야 합니다.

그리고 ..지금 당장 서버 확인해주세요..루트서르 하드공간이 얼마나 남아는지 확인해보세요
이전하고 얼마나 차이나게 쌓여는지 확인 하셔야합니다. 물론 11테라라....싱경안써도 되겟지만.....흠 암튼 부럽넹;;;ㅎ
참고로 전 500기가도 않된 서버가고 있답니다. ---;;;

진심으로 감사드립니다.
모두 해결되었습니다 15초 걸리던게 1초도 안걸리게 되었습니다.
저는 서버사양이 낮아서 느린줄 알고 엄청 늘린거라 다시 서버사양을 낮춰야 합니다 ㅎㅎ
정말 너무너무 감사드립니다!!

답변을 작성하시기 전에 로그인 해주세요.
전체 126,530 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT