[완료] sqlite3 스레드2개에서 동시에 select, insert 작업.

wmjj의 이미지

안녕하세요~
wince에서 sqlite db를 사용하여 프로그램을 만들고 있는데요
궁금한 점이 생겨서요...

2개의 스레드를 만들어서
한쪽에서는 select만 하고
한쪽에서는 insert만 할려고 합니다.

만약에 동시에 select와 insert 작업이 db에 들어가게 되면
오류가 나나요??
아니면 정상 작동 하나요??

답변 부탁드리겠습니다~~~

kid1402의 이미지

sqltie 자체가 어떻게 작동하는지는 모르겠지만

보통 코드를 짜다가 위와 같이 같은 데이터에 동시에 두개 이상의 작업이 가능한 경우, 결과가 어떻게 될 지 예측할 수 없습니다.

select가 먼저 되고 나서 insert가 될지, 혹은 insert가 된 다음 select가 되어 select한 값에 insert결과가 반영될지 알 수 없죠

그래서 보통은 동시에 같은 데이터에 접근할 가능성이 있으면 critical section이나 mutex등으로 동기화를 해줍니다

동기화와 관련된 자료를 찾아보시면 좋을거 같네요

wmjj의 이미지

답변 감사 드립니다.
동기화를 시키도록 해야 겠군요

gurugio의 이미지

DB마다 기본적으로 동기화를 해주는 것이 있고 아닌 것이 있습니다.
제가 알기로는 sqlite는 동기화를 안해주는걸로 압니다.
커밋을 할때까지는 동기화를 해주셔야합니다.
sqlite의 메뉴얼에 관련 내용이 있을겁니다.

wmjj의 이미지

아무래도 동기화를 시켜야 겠군요
답변 감사드립니다 ^^

익명 사용자의 이미지

wmjj의 이미지

이런 기능이 있었네요~~

gurugio의 이미지

오 빌드를 다시하면 되는군요..

그런데 thread safe하다는 것이요 트랜잭션에 대한 이야기는 아닌거 맞지요?
만약 두 쓰레드가 하나의 테이블에 값을 읽고 쓴다면
thread safe는 테이블의 완전성을 보장한다는 것이지만
커밋을 하지 않으면 테이블의 값이 완전히 바뀌지 않자나요.

송효진의 이미지

양쪽에서 insert, update 하는 것이 아닌 한쪽만 insert 를 하는 것이니 어떻게 해도 안전하지 않을까요?
설마 insert 과정이 반만 진행된 상태에서 select 했다고 이상한 데이터를 리턴하진 않겠죠.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.