MySQL UPDATE

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Hallo,

Ik heb bet een uurtje in de MySQL documentatie zitten turen en kwam een boel beperkingen tegen... maar dat laat ik even achterwege.

Mijn vraag is... Lockt MySQL de tabel/het record automatisch bij een update?

Ik zag er niets over in de documentatie en wanneer ik een
LOCK TABLES tabel WRITE
doe dan kan de tabel niet worden gelezen door een andere thread...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ow ja, hoe kan ik controleren als een table gelockt is ja of de nee? Dit i.v.m. het netjes geven van meldingen...

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Meestal krijg je of een time out of een error terug als een tabel gelocked is.
Testen kan je dat door vanuit twee sessie dezelfde update te gaan uitvoeren. Ik weet alleen niet of MySQL ook auto-commit altijd aan heeft staan of dat je echt transactie ondersteuning hebt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Uiteraard lockt mysql automatisch bij een update...

Als ze dat niet zouden doen zou elke database die en beetje veel gebruikt wordt gegarandeerd in de soep lopen...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op donderdag 14 maart 2002 14:05 schreef Goodielover het volgende:
Meestal krijg je of een time out of een error terug als een tabel gelocked is.
Testen kan je dat door vanuit twee sessie dezelfde update te gaan uitvoeren. Ik weet alleen niet of MySQL ook auto-commit altijd aan heeft staan of dat je echt transactie ondersteuning hebt.
Autocommit staat altijd aan... en dit is alleen uit te zetten als je Innodb en die andere gebruikt...

Het probleem is dan ook dat iedere gebruiker als de zelfde gebruiker in de MySQL db inlogt (het is een php script).

Zou je niet op pid kunnen locken?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

De DBMS locked. Je kan je eigen locking bouwen, maar dan bouw je een DBMS en dat lijkt me niet de bedoeling.
Als autocommit aanstaat heb je nooit een lock uitstaan. want een commit geeft de locks weer vrij.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
hoe kun je dan controleren als een tabel/record gelocked is?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Het is dan dus nooit gelocked

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op donderdag 14 maart 2002 14:40 schreef Goodielover het volgende:
Het is dan dus nooit gelocked
Hoe bedoel je? Iemand zei net toch dat een tabel wordt gelockt tijdens een UPDATE?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Dan gebruikt hij dus InnoDB zoals je zelf ook al aangaf.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op donderdag 14 maart 2002 14:47 schreef Goodielover het volgende:
Dan gebruikt hij dus InnoDB zoals je zelf ook al aangaf.
Dus als ik MyISAM gebruikt doet ie het niet... en moet ik dus wel locken en unlocken?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Ik ken MyISAM niet. Als die geen auto-commit heeft, doet een update zelf een lock en hoef je dat dus niet expliciet te doen. Je kan dat trouwens wel vaak met een statement a la LOCK TABLE tabelnaam EXCLUSIVE.
Moet je even in de manual kijken van het DBMS.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
De enige mogelijkheid in MySQL is een READ en een WRITE lock.
If a thread obtains a READ lock on a table, that thread (and all other threads) can only read from the table. If a thread obtains a WRITE lock on a table, then only the thread holding the lock can READ from or WRITE to the table. Other threads are blocked.
Pagina: 1