INNODB & MYSQL (alweer..)

Pagina: 1
Acties:

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 13-08 18:15

gvdh81

To got or not to got..

Topicstarter
Hoi hoi, na de search gebruikt te hebben en alle artikelen over Innodb gelezen te hebben waar ook het woord commit in voor kwam ben ik nog niets wijzer geworden.

We zijn hier een programma van Clarion (met database TopSpeed) aan het overschrijven naar MySQL, en wel met INNODB ondersteuning, (aangezien Topspeed in transactie mode 100.000 records toevoegd in 10 seconden). TopSpeed is met andere zaken heel erg traag vandaar dat we naar MySQL toe gaan, hebben we meteen een soor tvan client server verhaal :D

Maar nu het probleem (in het engels aangezien ik het al op een andere site had gepost):

------------------------
Engelse post:
------------------------

Heya, I have downloaded and installed the 3.23 version of MySQL. Set all the correct options as found in the manual for getting INNOdB to work. INNOdB works fine, i have a table of type INNOdB but i can't seem to use transactions..

When i start: mysqld-max.exe (on a win95 system) the process is loading. I have a database called hoffice and a table called autos. But when i start the command line mysql.exe and type:

code:
1
2
3
4
5
6
7
8
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO `autos` (`omsch`) values ('test');
Query OK, 1 row affected (0.33 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)


I heb ook al geprobeerd om "SET AUTOCOMMIT=0;" enzo te gebruiken, maar ik was in de veronderstelling dat MySQL dus NIETS deed als hij in transactie mode was, TOTDAT je een COMMIT uitvoerde. Klopt dit, of kan iemand me ergens mee helpen want ik weet het ECHHHHHT niet meer :D

------------------------
Config file
------------------------
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[client]
#password=my_password
port=3306
#socket=MySQL

[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable    = key_buffer=384M
set-variable    = max_allowed_packet=1M
set-variable    = table_cache=512
set-variable    = sort_buffer=2M
set-variable    = record_buffer=2M
set-variable    = thread_cache=8
set-variable    = thread_concurrency=8
set-variable    = myisam_sort_buffer_size=64M
server-id   = 1

skip-bdb

innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_home_dir = c:\ibdata
innodb_log_group_home_dir = c:\iblogs
innodb_log_arch_dir = c:\iblogs
set-variable = innodb_mirrored_log_groups=1
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=5M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_archive=0
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_file_io_threads=4
set-variable = innodb_lock_wait_timeout=50

[mysqldump]
quick
set-variable    = max_allowed_packet=16M

[mysql]
no-auto-rehash
#safe-updates

[isamchk]
set-variable    = key_buffer=256M
set-variable    = sort_buffer=256M
set-variable    = read_buffer=2M
set-variable    = write_buffer=2M

[myisamchk]
set-variable    = key_buffer=256M
set-variable    = sort_buffer=256M
set-variable    = read_buffer=2M
set-variable    = write_buffer=2M

[mysqlhotcopy]
interactive-timeout

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-08 19:34
Hoi.
GoT is een nederlandstalig forum, dus verwachten wij ook van jou dat je het probleem in het nederlands hier neerzet.
Dat je het al op een engelse site had geplaatst, en daarom hier ook maar paste in het engels is geen excuus. Je mag tenminste de moeite doen om het in het nederlands hier te zetten.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 30-08 19:34
Misschien moet je ook maar eens eerst een en ander gaan lezen over transacties.
Wat een transactie is enzo.
Een transactie is een geheel van bewerkingen die als 1 geheel moeten uitgevoerd worden. Dus ofwel wordt alles uitgevoerd, ofwel wordt niets uitgevoerd. Om dit te verwezenlijken moet er idd eerst een commit gebeuren vooraleer alle wijzigingen echt naar de databank weggeschreven worden. Met de commit geef je nl. aan dat de transactie afgelopen is.
Ipv een commit kan je ook een rollback doen. Deze zorgt er dan voor dat de wijzigingen ongedaan gemaakt worden (dit doe je als er een fout optreedt bij een van de databank-bewerkingen, alle voorgaande bewerkingen binnen die transactie worden dan ook ongedaan gemaakt).

https://fgheysels.github.io/


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 13-08 18:15

gvdh81

To got or not to got..

Topicstarter
Ik heb dus mysql geinstalleerd en alle opties goed gezet om INNODB aan de praat te krijgen die ik in de manual van INNODB heb gevonden. INNOdB draait ik heb een tabel van het type innodb maar ik krijg die pokke transacties niet aan de praat.

code:
1
2
3
4
5
6
7
8
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO `autos` (`omsch`) values ('test');
Query OK, 1 row affected (0.33 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)


Voor zover ik weet moet hij bij Commit pas alles uitvoeren of zit ik fout?

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 13-08 18:15

gvdh81

To got or not to got..

Topicstarter
Ik weet dus wat een transactie is ik heb er al mee gewerkt in asp, maar waarom doet hij dan meteen een insert uitvoeren en niet pas bij een commit?

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-08 19:34
Lees mijn voorgaande post eens.
Bij commit bevestig je dat alle wijzigingen goed zijn en dat ze niet meer teruggedraaid kunnen worden. De transactie wordt beëindigd.

Of de wijzigingen dan ook daadwerkelijk pas te zien zijn in de databank na de commit, hangt afaik van dbms tot dbms.

https://fgheysels.github.io/


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

DOe ipv een COMMIT eens een rollback, en kijk of de test auto dan nog steeds in je tabel staat. Als dat het geval is dan is er idd iets mis :)...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

gvdh81 schreef op 18 oktober 2002 @ 10:33:
Ik weet dus wat een transactie is ik heb er al mee gewerkt in asp, maar waarom doet hij dan meteen een insert uitvoeren en niet pas bij een commit?
voor de transactie waar je in zit, lijkt het alsof hij dat idd doet. Voor andere connecties is dit niet het geval. Dit kun je het beste zien, door twee keer een verbinding te maken, waarbij je bij de eerste een transactie begint en een insert doet, maar nog geen COMMIT. Bij je tweede verbinding doe je een SELECT op de tabel waar je net een INSERT had gedaan, en tadaa, geen nieuw rijtje :). Die verschijnt pas na de COMMIT.

maar natuurlijk was je zelf ook al zo slim om hier mee te experimenteren ;)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Verwijderd schreef op 18 oktober 2002 @ 10:37:
voor de transactie waar je in zit, lijkt het alsof hij dat idd doet. Voor andere connecties is dit niet het geval. Dit kun je het beste zien, door twee keer een verbinding te maken, waarbij je bij de eerste een transactie begint en een insert doet, maar nog geen COMMIT. Bij je tweede verbinding doe je een SELECT op de tabel waar je net een INSERT had gedaan, en tadaa, geen nieuw rijtje :). Die verschijnt pas na de COMMIT.
Behalve als je RDBMS ook Dirty Reads toestaat. :)
Dan kun je ze wel zien.

Never underestimate the power of


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 13-08 18:15

gvdh81

To got or not to got..

Topicstarter
Ik zat helemaal fout, sorry :)
Pagina: 1