MS SQL에 다른 형태의 테이블 2개가 있습니다.
두 테이블의 용량은 거의 동일하나,
A 테이블은 컬럼수가 100개에 행 수는 100만개
B 테이블은 컬럼수가 5개에 행 수는 200만개.
두 테이블에 각각 로컬 Select 쿼리시 결과 값은 B가 빨리 나옵니다.
외부에서 동일한 쿼리를 해도 B가 빠릅니다.
A 테이블에 대한 Select 쿼리시 클라이언트 측 대역폭 30% 정도 점유합니다.
B 테이블에 대한 Select 쿼리시 클라이언트 측 대역폭 80% 정도 점유합니다.
질문은 외부에서 A 테이블에 대한 쿼리속도를 끌어올릴 수 있는 방법이 있을까요?
B 테이블 쿼리시 전송속도만큼만 나와줘도 좋을텐데 SQL 구성의 네트워크 패킷 사이즈 변경으로는 속도 향상이 없는 듯 합니다.
(변경은 기본 4096 바이트에서 512,1024,8192,12800까지 해봤습니다.)
±×³É ´Ü¼øÈ÷ ºÁ¼´Â DB¸¦ ±Ü¾î¿À´Â À¥ÆäÀÌÁö or CSÇÁ·Î±×·¥¿¡¼
ÀÚÁÖ »ç¿ëÇÏ´Â Ä÷³À» À妽ÌÇÏ´Â ¹æ¹ýÀÌ ÀÖÁö ¾ÊÀ»±î¿ä?
Àúµµ Àß ¸ð¸£¹Ç·Î ´ÙÀ½ºÐ²² Æо²~
¼¿·ºÆ®µÈ Data°¡ ¿òÁ÷ÀÌ´Â ¾çÀº µ¿ÀÏÇϴϱî¿ä.
Àú¶ó¸é ¾Æ·¡ÀÇ ¼ø¼·Î °ËÅäÇغ¼°Í °°½À´Ï´Ù.
DBÆ©´× -> ³×Æ®¿÷È®Àå¿©ºÎ -> Data¾ÐÃà
±×·¯¸é ÀÔÃâ·Â ´ÜÀ§ÀÎ BLOCK¿¡ AÅ×À̺íÀº ÇÑ°³ÀÇ ÇàÀÌ µé¾î°¥ ¶§ BÅ×À̺íÀº 20°³°¡ µé¾î°¡°Ô µË´Ï´Ù
´Ü¼ø Á¶È¸(WHER/ORDER BY ¾øÀÌ)·Î µ¿ÀÏ ¼öÀÇ ÇàÀ» Á¶È¸ ½Ã AÅ×À̺íÀÇ µð½ºÅ© READ°¡ 20¹è°¡
ÇÊ¿äÇؼ I/O º´¸ñ¿¡ °É¸± ¼ö ÀÖ½À´Ï´Ù. µð½ºÅ© »ç¿ë·®(I/O)À» ¸ð´ÏÅ͸µ Çغ¸½Ã´Â °Ô ÁÁÀ» °Í °°½À´Ï´Ù.
±×¸®°í ³×Æ®¿öÅ© »ç¿ë·®µµ A Å×ÀÌºí¿¡¼ ¸ðµç Ä÷³ÀÌ ¾Æ´Ñ BÅ×À̺í Ä÷³ ¼ö(5°³) ¸¸Å¸¸ Äõ¸®¸¦ ÇÑ´Ù¸é
µð½ºÅ© READ°¡ 20¹è°¡ µÇ¾î¾ß µ¿ÀÏÇÑ ´ë¿ªÆøÀ» »ç¿ëÇÏ°Ô µÉ °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
¾î´À Äõ¸®°¡ ¾î¶»°Ô IO¸¦ ÀÏÀ¸Å°´ÂÁö º¼¼öÀÖ½À´Ï´Ù.
Àüü RowÀÇ ¼ö°¡ Áß¿äÇϴٱ⠺¸´Ù´Â....
SelectÇؼ »Ì¾Æ ³»¾ß ÇÏ´Â RowÀÇ ¼ö°¡ Áß¿äÇÕ´Ï´Ù.
Àüü RowÀÇ ¼ö´Â À妽º ´ÜÆíȸ¸ ½ÉÇÏÁö ¾Ê´Ù¸é ¸îõ¸¸°ÇÀÌ ³Ñ¾î°¡Áö ¾Ê´Â´Ù¸é ½É°¢ÇÏ°Ô ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.
¸îõ¸¸°ÇÀÌ ³Ñ¾î °£´Ù¸é...
ÆÄƼ¼Å´×Å×À̺í·Î ¹°¸® °ø°£À» ºÐ»êÇؼ ÀúÀåÇÏ´Â ¹æ½ÄÀ¸·Î Å×À̺íÀ» ¼³°èÇØ¾ß ÇÕ´Ï´Ù.
ÀÏ¹Ý »óȲ¿¡¼ 100~200¸¸°ÇÀ» Çѹø¿¡ SelectÇÒÀÏÀÌ ÀÚÁÖ ÀÖÁö´Â ¾Ê°ÚÁÒ,
±×¸®°í MS-SQL °°Àº°æ¿ì Oracle°ú ´Þ¸® Select½Ã¿¡µµ LockÀÌ °É¸³´Ï´Ù.
Select¸¦ ½ÇÇàÇØ ³õ°í ´Ù¸¥ Insert , Update , Delete°¡ ½ÇÇàµÇÁö ¸øÇÏ°í ´ë±â ÇÏ´Ù°¡.. ·ÕÆ®·£Á§¼ÇÀ¸·Î
Å×À̺í LockÀ» °É¾î ¹ö¸®±âµµ ÇÕ´Ï´Ù...
ÇÊ¿äÇÑ ¸¸ÅÀÇ Á¤º¸¸¸ WhereÀý·Î °É¾î¼ »ç¿ëÇÏ½Ã´Â°Ô ´äÀÌ ¾Æ´Ò±îÇÕ´Ï´Ù.