mysql table lock

peccavi의 이미지

안녕하세요.

mysql c api를 이용해 프로그램을 작성중입니다.

여러 프로세스에서 하나의 테이블에 접근해 insert, select, update하는 작업을 한다면

반드시 table lock을 걸어주어야 하나요?
(코드 안의 자체 mutex등은 별개로 합니다.)

read하는 작업만 있는게 아니라면 당연히 lock이 필요하다고 생각은 들지만

mysql 내부적으로 구현이 어떻게 되는지 잘 모르겠네요.

쿼리의 예를 들자면, select를 해서 record가 없으면 insert를 하고, record가 있으면 update를 합니다. 이런 프로세스가 하나의 테이블을 대상으로 여러개 돌고 있는 형태입니다.

이런 경우에, 반드시 table lock이 필요한가요?

alone의 이미지

내일은 내일일뿐.....

기본적으로 myisam 을 쓰신다면 커리시 table lock이 걸립니다.
그리고 예를 드신부분은

INSERT INTO tablename( a, b) values(1, 2) ON DUPLICATE KEY UPDATE b=2; 이런식으로 쓰시면 한번에 커리 가능

내일은 내일일뿐.....

atie의 이미지

여러 프로세스가 어떤 결과를 table에서 가져와 보여주느냐에 따라 lock의 여부를 결정할 문제일 겁니다. 일반적으로 트랜잭션을 쓰는 것은
http://en.wikipedia.org/wiki/Isolation_(computer_science)
여기의 3가지 문제가 내 코드 상에서 문제가 될 때 씁니다.
----
I paint objects as I think them, not as I see them.
Ubuntu Edgy user / Ubuntu KoreanTeam

----
I paint objects as I think them, not as I see them.
atie's minipage

jg의 이미지

innoDB 에서만 됩니다.
(혹시 모르시는 분 계실까봐 -.-;;)

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

gala의 이미지

table lock 가 디비 내부에서 의 속도는 빠르지만

빈번한 락으로 인해 전체적인 성능 다운이 예상됩니다.

innoDB 타입으로 바꾸시구..

필요 하시면 Isolation 레벨 조절 해보세요

좋은 하루되세요.

peccavi의 이미지

종합하자면.. myisam타입의 테이블에서는 논리적인 오류만 없다면
(다른 프로세스의 write쿼리 때문에 특정 프로세스에서 보유하고 있던 select값이 유효하지 않은 값이 되어버리는 등의 상황)
table lock은 고려하지 않아도 될까요?
개념만 잡고 작업하자니 힘드는군요.. ㅜ_ㅜ
답변주신분들 감사합니다~

----
jai guru deva om...

----
jai guru deva om...

댓글 달기

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