MySQL은 항상 Atomic 하게 작업을 처리 하나요?

jagalchee의 이미지

MySQL 에 간단한 테이블을 하나 만들었습니다.
그리고 이 테이블에 자료를 insert 혹은 select 혹은 delete 혹은 update를 수행하는 간단한 C 프로그램을 멀티 프로세스 모드(즉, fork() 이용)로 짰습니다.

즉, 어떤 자식 프로세스에선 이 테이블에 update 를 할려고 할 때, 다른 자식 프로세스는 이 테이블에 delete 를 하는 상황이 발생할 수가 있습니다.
이런 경우 항상 어떤 작업 하나만이 Atomic 하게 진행한 후에, 다른 작업이 진행 되도록 하게 하고 싶습니다.(즉, update 하는 도중에 delete 를 할려는 시도가 오면, 이 delete는 update 가 끝날때 까지 블락 되었다가 실행되게 한다던가 말입니다.)

어디서 듣기론 MySQL 에선 그냥 테이블을 만들어도(즉, 아무런 조취를 취하지 않아도) 쿼리문들은 항상 Atomic 하게 실행되는 걸로 들었는데, 사실인가요? 아니라면, 테이블에 어떤 조취를 취해야만 항상 쿼리문들이 Atomic 하게 실행되게 할 수 있나요? 아니면 C 프로그램 수준에서 이걸 제어해야 하는 건가요?

정태영의 이미지

lock 을 거세요..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

bugiii의 이미지

PostgreSQL 으로 변경할 수 있다면 한번 시도해보시는 것도 좋다고 생각합니다.

sjpark의 이미지

mysql은 update할때 delete가 오면 둘이 동시에 실행되나요?
원래 update할때 update가 끝나야 delete가 실행되고.. 머 이러는거 아닌가요?

DB시간에 배운거 같은데... mysql은 그게 안되는건가..흠...??
transaction, ACID

제 생각이 틀린건가요?
그러니까.. atomic하게 진행된다. 흠..;;??

소타의 이미지

클라이언트가 동시에 2개 붙어서 update, delete 를 하더라도 서버에서는 그것이 "동시"가 아닙니다.
먼저 온놈부터 처리하니까요. 그리고 자동으로 lock이 됩니다~
mysql이 그정도로 허접하지는... ^^;;

leilei의 이미지

nonun wrote:
mysql이 그정도로 허접하지는... ^^;;

ㅎㅎ :D

맞습니다.. 많은 경우 mysql을 써 봤지만 상당히 훌륭합니다..

다만.. 예를 들어...
update하고 먼가 계산.. 다시 update를 해야 하는 경우
중간에 delete를 하면 문제가 되겠죠.. :)

그런 경우 lock이나 다른 방법들을 고려해 주시면 되겠네요..
보통 한방에 끝나는 쿼리라면 별 생각없이 날려 주시고
그 순간에 일어날 일들만 생각하시면 됩니다.

댓글 달기

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