db연결 관련 질문입니다.

siba555의 이미지

안녕하세요.
디비에 접속하여 1분에 한번씩 데이터를 질의하여 가져온후 정보를 바탕으로 sms를 발송하려고 합니다.
커넥션을 유지하는게 나을지 아니면 1분마다 연결을 맺고 데이터를 가져오는 방식이 나을지 디비 연결이 무지하여 질문드립니다.
고수님들의 조언 부탁드립니다.

ps db connection pool에대한 이해가 부족해서 그런데 제가만들려고 하는 프로세스 구조상 적용가능한지도 알려주시면 감사하겠습니다.

ironboy의 이미지

두리뭉실하게, 답을 달자면..

1분에 한번씩 커넥션을 맺으면 됩니다.
커넥션 맺는 잡업에 대한 오버헤드가 걱정이신 모양인데,
1분동안(혹은 영원히..) 커넥션을 유지하는 작업이 훨씬 더 큰 오버헤드입니다.

두번째..(ps).. 질문은.... 님께서 만드시려는 프로그램이 뭔지를 잘 모르겠네요.

siba555의 이미지

db연결이 첨이라 어느쪽이 더 나을지 몰라서 물어봤는데 역시 맺고있는게 더 비효울적인가 보네요..
만들려고 하는프로그램은 일정주기(1분)에 한번 디비에서 아이피를 긁어와서 sms를 발송하는 서비스입니다.
여기에 혹시 디비커넥션 풀을 적용하는게 가능하나 싶어서요..(db 커넥션 풀이 뭔지는 잘모르지만 좋다고 해서 ㅠㅠ)
답변달아주셔서 감사합니다.

litdream의 이미지

Connection Pool 은, 이미 연결된 n개의 connection 을 돌려가면서 사용하는겁니다.
가령 이런경우죠.

cn = pool.getConn()
cur = cn.cursor()
# do useful thing
# ...
pool.releaseConn(cn)

간단히는 이런 모양입니다만, getConn() 과 releaseConn() 을 계속 match 시키는것은 사실 별로 좋은 방법이 아닙니다. Exception/exit 이 날경우는 매번 release 를 해줘야하기때문에 번거롭죠. Oracle client 처럼 agent 를 사용하는 architecture 에서는 client 에서 connection pool 을 관리해줘서, timeout/close 에 따라 connection 을 수거해가기도 합니다만,

우선 그냥 pool 없이 평이한 방법을 써보고, load 에 문제가 생기면 그때 optimize 하는건 어떨까요? :)

삽질의 대마왕...

삽질의 대마왕...

익명사용자의 이미지

1분동안 커넥션을 유지하는데 어떤 오버헤드가 든다는 건지 잘 모르겠네요. 좀 더 자세히 설명해 주시겠습니까?

상식적으로 생각하면 이미 연결된 커넥션에 query 하나 날리는 것보다 매번 연결했다 끊는 게 훨씬 오버헤드가 심할 것 같은데 말이죠. (뭐 1분에 한 번이라니 사실 어느 쪽이든 새발의 피겠지만.)

blueskya의 이미지

이용하시는 디비가 지금 만드시는 프로세스에만 이용된다면 연결/해제를 반복해도 무방해 보입니다만... 뭐 이것도 얼마나 많은 곳에서 요청하느냐에 따라 다르긴하겠지만요...

여러 프로세서에 중복사용되고 있다면 디비의 튜닝정도가 어느정도인지를 체크하여 디비풀을 이용하여 프로세서의 사용량에 적합한 커넥션들을 풀에서 관리하는게 훨씬 유리합니다.

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

ㅡ,.ㅡ;;의 이미지

1분에 한번 삽질하는데 삽을 손에 계속들고 1분마다 삽질할것인가...

한번삽질하고 삽놓고 1분쉬다가 한번씩 삽질할것인가..??

어느것이 유리할까요?

글쓴분께서 말씀하신듯이 1분이라면 꽤 긴?시간이고 궂이 접속유지 할필요는 없어보일듯.

----------------------------------------------------------------------------
C Library Development Project


----------------------------------------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.