Avatar billede sjh Nybegynder
08. november 2004 - 12:32 Der er 12 kommentarer og
1 løsning

Database type

Jeg har lige installeret MySQL-Front.. og kan nu se at der findes et hav af typer:

BDB, HEAP, ISAM, InnoDB, Merge, MRG_MylSAM, MylSAM, BerkeleyDB

Jeg kan se på alle de andre tabler jeg har, at det er type MylSAM.
Så nu bliver jeg lidt i tvivl om det nu er rigtig at bruge MylSAM?
Avatar billede arne_v Ekspert
08. november 2004 - 12:45 #1
Den korte version:

if(temporære data) {
  vælg HEAP
} else if(brug for transaktioner med commit/rollback) {
  vælg InnoDB
} else {
  vælg MyISAM
}
Avatar billede arne_v Ekspert
08. november 2004 - 12:45 #2
Avatar billede sjh Nybegynder
08. november 2004 - 12:52 #3
hvad er så "temporære data" og "commit/rollback"??
Avatar billede arne_v Ekspert
08. november 2004 - 12:55 #4
temporære = midlertidige = noget der bare skal bruge sog så smides væk
(data i HEAP tabeller ligger kun i hukommelsen og bliver ikke skrevet til disk).

transaktioner er når du udfører flere SQL sætninger og så enten laver
COMMIT hvor alle sætningerne udføres eller ROLLBACK hvor ingen af sætningerne
udføres.
Avatar billede sjh Nybegynder
08. november 2004 - 13:03 #5
Altså sådan:

MyISAM: = SELECT * FROM Table WHERE ID = 25

InnoDB: = SELECT parent, cat.name FROM menurel INNER JOIN ON menurel.parent = cat.id WHERE child = 23;
Avatar billede arne_v Ekspert
08. november 2004 - 13:08 #6
Nej.

SQL dialekten er den samme for MySQL og InnoDB tabeller.

Hvis ikke du kender begrebet transaktioner så har du ikke brug for InnoDB.

Transaktioner er relevant i eksempler som:

UPDATE konto SET salo=saldo-100 WHETE id=1234567
UPDATE konto SET salo=saldo+100 WHETE id=7654321

man overflytter penge fra en konto til en anden konto.

Det er meget vigtigt at enten bliver begge UPDATE udført eller ingen
af dem. Hvis kun den første udføres, så forsvinder der penge ud i den
blå luft.
Avatar billede sjh Nybegynder
08. november 2004 - 13:17 #7
Til test og andet sjov skal man så bare bruge MyISAM.. og til noget som skal opdateres i flere tabeller så er det InnoDB..

hvad ville man bruge HEAP til?? hvis det ikke bliver gemt??
Avatar billede arne_v Ekspert
08. november 2004 - 13:23 #8
Jeg tror bare at du skal bruge MyISAM.

Det er også det de fleste bruger.

Den dag du får brug for transaktioner så kan du begynde at kigge på InnoDB. Eller
en anden database end MySQL.
Avatar billede arne_v Ekspert
08. november 2004 - 13:25 #9
Man kan sagtens have brug for en tabel til midlertidig opbevaring af data,
men hvor det ikke er behov for at gemme data.
Avatar billede arne_v Ekspert
08. november 2004 - 13:25 #10
og et svar
Avatar billede sjh Nybegynder
08. november 2004 - 13:26 #11
okææ :D takker
Avatar billede sjh Nybegynder
08. november 2004 - 13:31 #12
aha HEAP fx. når man lige skal overfør de email-adresser som der skal sendes til ;)
Avatar billede arne_v Ekspert
08. november 2004 - 13:37 #13
Ja.

Du laver et udtræk og gemmer nogle data i en HEAP tabel, som du så
laver et andet udtræk fra.

Hvis MySQL serveren dratter ned så forsvinder data i tabellen. Men du starter
bare forfra med at gemme data i HEAP tabellen.
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