<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
	<channel>
				<title><![CDATA[KBoard 6.8 업데이트 후 protectSearchPosts() SQL 지연 및 BNL JOIN 발생 문의]]></title>
		<link>https://www.cosmosfarm.com/threads/rss/document/74067</link>
		<description><![CDATA[<p>1. 정확한 제품 또는 플러그인 이름</p>

<p>KBoard 6.8</p>

<p> </p>

<p>2. 상세 내용</p>

<p>안녕하세요.</p>

<p>최근 KBoard 게시판/댓글 업데이트 이후 WordPress 사이트 속도가 불규칙하게 느려지고 MariaDB CPU 사용률이 크게 상승하는 문제가 발생해 확인한 내용을 공유드립니다.</p>

<p>환경:</p>

<ul>
	<li>
	<p>CentOS 7 + CWP</p>
	</li>
	<li>
	<p>MariaDB 10.6.19</p>
	</li>
	<li>
	<p>PHP-FPM 8.3</p>
	</li>
	<li>
	<p>WordPress</p>
	</li>
	<li>
	<p>KBoard 게시판 6.8 / 댓글 5.7</p>
	</li>
</ul>

<p>문제는 아래 파일의 <code>protectSearchPosts()</code>에서 실행되는 SQL로 확인되었습니다.</p>

<p><code>wp-content/plugins/kboard/class/KBRouter.class.php</code></p>

<p>기존 JOIN 조건:</p>

<pre>
<code>LEFT JOIN wp_kboard_board_content c
ON p.post_name = CAST(c.uid AS CHAR)</code></pre>

<p>slow query log에서는 해당 SELECT가 약 1~1.5초씩 소요됐고, 전체 SQL을 <code>ANALYZE FORMAT=JSON</code>으로 확인했을 때 <code>wp_kboard_board_content</code> 쪽에 BNL JOIN이 발생했습니다.</p>

<p>기존 측정:</p>

<pre>
<code>r_total_time_ms: 약 1509ms
join_type: BNL</code></pre>

<p>테스트로 JOIN을 아래와 같이 변경했습니다.</p>

<pre>
<code>LEFT JOIN wp_kboard_board_content c
ON c.uid = CAST(p.post_name AS UNSIGNED)
AND p.post_name = CAST(c.uid AS CHAR)</code></pre>

<p>변경 후:</p>

<pre>
<code>r_total_time_ms: 약 32ms
access_type: eq_ref
key: PRIMARY
BNL JOIN 없음</code></pre>

<p>결과 동등성도 확인했습니다.</p>

<pre>
<code>lost_original_matches: 0

old_minus_new: 0
new_minus_old: 0</code></pre>

<p>현재 운영 환경에서 <code>KBRouter.class.php</code>의 JOIN 부분만 위와 같이 변경한 뒤 확인한 결과,</p>

<ul>
	<li>
	<p>MariaDB CPU 사용률 감소</p>
	</li>
	<li>
	<p>게시글 등록 속도 정상화</p>
	</li>
	<li>
	<p>사이트 전반 응답 속도 개선</p>
	</li>
	<li>
	<p>KBoard 게시글 등록/조회 정상</p>
	</li>
</ul>

<p>상태입니다.</p>

<p>같은 KBoard를 사용하는 다른 사이트에서는 게시글 수가 적어 증상이 거의 없었고, 게시글 및 KBoard 복제글이 많이 누적된 사이트에서 문제가 크게 나타났습니다.</p>

<p>권한 강화 기능 자체를 제거하는 방식보다는 해당 JOIN 구조를 한번 검토해주시면 좋을 것 같습니다.</p>

<p>제가 적용한 수정안이 모든 환경에서 안전하다고 단정할 수는 없으므로, 개발팀에서 검토 후 공식 업데이트에 반영 가능한지 확인 부탁드립니다.</p>

<p>감사합니다.</p>

<p> </p>

<p>3. 확인 가능한 상세 페이지 주소</p>

<p> </p>

<p> </p>

<p>4. 수정한 코드 내역 (있다면)</p>

<p>수정 파일:</p>

<p><code>/wp-content/plugins/kboard/class/KBRouter.class.php</code></p>

<p>기존 코드:</p>

<pre>
<code>LEFT JOIN `{$wpdb-&gt;prefix}kboard_board_content` c ON p.post_name=CAST(c.uid AS CHAR)</code></pre>

<p>수정 코드:</p>

<pre>
<code>LEFT JOIN `{$wpdb-&gt;prefix}kboard_board_content` c ON c.uid=CAST(p.post_name AS UNSIGNED) AND p.post_name=CAST(c.uid AS CHAR)</code></pre>

<p>기존 문자열 비교 조건은 그대로 유지하면서, <code>c.uid</code>의 PRIMARY KEY를 이용할 수 있도록 숫자 UID 조건을 추가했습니다.</p>

<p>수정 전 전체 SQL을 <code>ANALYZE FORMAT=JSON</code>으로 측정했을 때 약 1509ms가 소요되었으며 <code>BNL JOIN</code>이 발생했습니다.</p>

<p>수정 조건으로 동일 SQL을 측정한 결과 약 32ms로 감소했고, <code>wp_kboard_board_content</code> 접근 방식이 <code>eq_ref / PRIMARY</code>로 변경되면서 BNL JOIN이 사라졌습니다.</p>

<p>또한 기존 SQL과 수정 SQL의 결과 차이를 확인한 결과:</p>

<pre>
<code>lost_original_matches: 0
old_minus_new: 0
new_minus_old: 0</code></pre>

<p>으로 확인되었습니다.</p>

<p>실제 운영 파일에는 위 JOIN 한 부분만 수정했으며, PHP 8.3 CLI에서 문법 검사를 통과한 뒤 PHP-FPM 8.3을 reload하여 적용했습니다.</p>

<p>적용 후 현재까지 확인한 결과는 다음과 같습니다.</p>

<ul>
	<li>
	<p>MariaDB CPU 사용률 감소</p>
	</li>
	<li>
	<p>게시글 등록 속도 정상화</p>
	</li>
	<li>
	<p>사이트 전반 응답 속도 개선</p>
	</li>
	<li>
	<p>KBoard 게시글 등록 및 조회 정상</p>
	</li>
</ul>

<p>현재까지 기능상 이상은 확인되지 않았습니다.</p>

<p> </p>]]></description>
		<copyright>Copyright 2026, 코스모스팜</copyright>
				<item>
			<title><![CDATA[
상세한 분석 내용과 수정안을 공유해 주셔서 감사합니다.

KBoard 6.8 버전의 protectSearchPosts() 함...]]></title>
			<link>https://www.cosmosfarm.com/threads/document/74068</link>
			<description><![CDATA[<p></p>
<p>상세한 분석 내용과 수정안을 공유해 주셔서 감사합니다.</p>
<p></p>
<p>KBoard 6.8 버전의 protectSearchPosts() 함수 내 SQL 쿼리에서 발생한 성능 저하 이슈와 관련하여, 제안해 주신 인덱스 최적화 방안은 매우 유의미한 내용으로 판단됩니다.</p>
<p></p>
<p>공유해 주신 내용은 기술 지원팀 및 개발팀에 전달하여 다음 사항들을 중점적으로 검토하도록 하겠습니다.</p>
<p></p>
<p>- 제안하신 JOIN 조건(c.uid 추가)이 다양한 DB 환경(MySQL, MariaDB 버전별 차이 등)에서 동일하게 성능 개선 효과가 있는지 확인</p>
<p>- 기존 문자열 비교 조건 유지와 숫자형 캐스팅 병행 시 발생할 수 있는 예외 케이스 검토</p>
<p>- 대용량 데이터 환경에서의 안정성 테스트 후 공식 업데이트 반영 여부 결정</p>
<p></p>
<p>사용자님의 전문적인 분석 덕분에 서비스 개선에 큰 도움이 될 것 같습니다. 검토 결과나 추가적인 업데이트 소식은 코스모스팜 공식 커뮤니티나 업데이트 로그를 통해 확인하실 수 있도록 준비하겠습니다.</p>
<p></p>
<p>소중한 의견 감사드립니다.</p>]]></description>
			<author>스레드봇 AI</author>
			<pubDate>Tue, 10 Nov 2026 17:16:57 +0000</pubDate>
			<category>KBoard</category>
		</item>
			</channel>
</rss>