Avatar billede dmg Nybegynder
17. januar 2005 - 17:34 Der er 11 kommentarer og
1 løsning

Hvad er forskellen på Myisam og InnoDB

Jeg er ved at lave en rapport på min mysql server. Jeg ved at InnoDB kan håndterer foreign key og har derfor valgt denne. Men hvis der er en der kan forklare mig de forskellige fordele, ville det være rart :-)
Avatar billede dmg Nybegynder
17. januar 2005 - 18:14 #1
Via dette link, fandt jeg ud af at InnoDB's tabeller er transaktionelle og jeg fatter minus af linket i denne som manden her, poster: http://www.kandu.dk/dk/news/383216/groupid/30813

Håber i kan hjælpe mig
Avatar billede arne_v Ekspert
17. januar 2005 - 18:37 #2
Avatar billede arne_v Ekspert
17. januar 2005 - 18:39 #3
Transaktioner går ud på at du "bundter" flere SQL kommandoer, således at enten
udføres de alle eller så fejler de alle.

Lad os sige at du skal overføre 100 kr. fra konto 101 til konto 102:

UPDATE konto SET kr = kr - 100 WHERE id = 101;
UPDATE konto SET kr = kr + 100 WHERE id = 102;

enten skal de begge udføres eller så skal ingen udføres. Hvis kun den ene
udføres så forsvinder der penge ud i den blå luft.

Så de 2 SQL sætninger putter man i en enkelt transaktion.
Avatar billede dmg Nybegynder
17. januar 2005 - 22:13 #4
Hej arne_v.

Tak for den rigtig gode forklaring. Jeg er blevet en del klogerer. Men for at jeg forstår det helt, har jeg brug for endnu et eksempel.

Du siger til sidst. "Så de 2 SQL sætninger putter man i en enkelt transaktion." er det i koden f.eks. php? eller er der en mysql funktion, hvor man bundter dem sammen?
Avatar billede arne_v Ekspert
17. januar 2005 - 22:16 #5
Du vil kunne gøre det i MySQL med:

SET AUTOCOMMIT = 0;
UPDATE konto SET kr = kr - 100 WHERE id = 101;
UPDATE konto SET kr = kr + 100 WHERE id = 102;
COMMIT;

men der er sikkert også en måde at gøre det i PHP på.
Avatar billede arne_v Ekspert
17. januar 2005 - 22:18 #6
PHP og mysqli har det ihvertfald.

Se:
  http://dk2.php.net/manual/en/function.mysqli-commit.php
Avatar billede dmg Nybegynder
17. januar 2005 - 22:25 #7
Det er perfekt. Nu har jeg massere af læsestuff. Hvis du vil tjene 15 points mere, vil jeg meget gerne ha en forklaring, hvad foreign keys bliver brugt til.

Hvis nu jeg har en tabel der hedder by
som indeholder 2 felter der hedder postnummer og by.

og jeg har en anden tabel der hedder bruger, som indeholder en masse brugerfelter, inkl. postnummer, så laver jeg en foreign key til tabellen by.postnummer. Men hvad er det helt præcist der sker?
Avatar billede arne_v Ekspert
17. januar 2005 - 22:28 #8
Så fortæller du InnoDB at bruger.postnummer->by.postnummer og så sikrer databasen
at du ikke kan indsætte postnumre i bruger som ikke eksisterer i by.
Avatar billede dmg Nybegynder
17. januar 2005 - 22:30 #9
ahhaaa i see. meget nice forklaring der... hvad betyder -> :) vil gerne lærer sproget. Du må gerne ligge et svar ;)
Avatar billede arne_v Ekspert
17. januar 2005 - 22:31 #10
Det var bare en forkortelse for "peger på"
Avatar billede arne_v Ekspert
17. januar 2005 - 22:31 #11
svar
Avatar billede dmg Nybegynder
17. januar 2005 - 22:32 #12
helt sikkert.. mange tak skal du ha og fortsat go aften
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester