On Tue, 06 May 2003 18:29:37 +0200, Flemming Frandsen wrote:
> De to værste problemer med mysql er:
> * Ingen foreignkey constraints.
> * Transaktioner er ikke atomare.
Hverken det ene eller det andet er sandt, og har ikke været det i to
år.
> Der er flere problemer end det:
Jo jo, men nu spurgte jeg alene til hvad det er, du mener gør at MySQL
ikke er en rigtig ACID database.
Det er så forældede oplysninger - MySQL giver mulighed for at vælge.
> mysql folkene har længe haft den holdning at "man" ikke har brug for
> transaktioner og foreignkey support.
Sandsynligvis stemmer denne holdning overens med den periode hvor de
ikke har selv har haft de features i deres eget program
Man skulle tro at perioden hvor folk kritiserer MySQL for ikke at være
ACID var begrænset til samme. Men folk bliver ved.
>> Heller ikke med innobase?
> innobase er ikke mysql, så vidt jeg husker er det en helt anden
> database som bare bruger mysqls sql parser og et par andre sager, men
> jeg kunne jo huske forkert.
Ja:
"7.5.1 InnoDB Tables Overview
InnoDB provides MySQL with a transaction-safe (ACID compliant)
storage engine with commit, rollback, and crash recovery
capabilities. InnoDB does locking on row level and also provides an
Oracle-style consistent non-locking read in SELECTs. These features
increase multiuser concurrency and performance. There is no need for
lock escalation in InnoDB, because row level locks in InnoDB fit in
very small space. InnoDB tables support FOREIGN KEY constraints as
the first table type in MySQL."
<
http://www.mysql.com/doc/en/InnoDB_overview.html>
Lidt mere overblik:
"Note that MySQL supports two different kinds of tables:
transaction-safe tables (InnoDB and BDB) and not transaction-safe
tables (HEAP, ISAM, MERGE, and MyISAM).
Advantages of transaction-safe tables (TST):
* Safer. Even if MySQL crashes or you get hardware problems, you
can get your data back, either by automatic recovery or from a
backup + the transaction log.
* You can combine many statements and accept these all in one go
with the COMMIT command.
* You can execute ROLLBACK to ignore your changes (if you are not
running in auto-commit mode).
* If an update fails, all your changes will be restored. (With
NTST tables all changes that have taken place are permanent)
* Can provide better concurrency if the table gets many updates
concurrently with reads.
Note that to use InnoDB tables you have to use at least the
innodb_data_file_path startup option. See section 7.5.3 InnoDB
Startup Options.
Advantages of not transaction-safe tables (NTST):
* Much faster as there is no transaction overhead.
* Will use less disk space as there is no overhead of
transactions.
* Will use less memory to do updates.
You can combine TST and NTST tables in the same statements to get
the best of both worlds."
<
http://www.mysql.com/doc/en/Table_types.html>
Dine negative 'anbefalinger' er ikke så overbevisende, når du ikke har
sat dig ind i det du taler om.
(Lidt datering:
"7.5.5.2 Foreign Key Constraints
Starting from version 3.23.43b InnoDB features foreign key
constraints. InnoDB is the first MySQL table type which allows you
to define foreign key constraints to guard the integrity of your
data."
<
http://www.mysql.com/doc/en/InnoDB_foreign_key_constraints.html>
3.23.43b blev frigivet i 2001:
<
http://www.mysql.com/doc/en/News-3.23.x.html>).
> Denne side beskriver ret godt tingene:
>
http://openacs.org/philosophy/why-not-mysql hvis mysql siden har
> ændret sig så er de ændringer max 3 år gamle og ikke noget jeg vil
> udsætte mine data for.
Det er jo en dejlig nem måde at affærdige forbedringer på.
Har du det på samme måde med de styresystem-versioner du kører dine
databaser, og dermed dine data, på?
Hvad med den udgave af fortolkeren til det programmeringssprog, Perl,
du bruger til at håndtere dine data med? [Tilbage til topic
]
Mvh.
--
"Från och med nu, så är 'så snart Adam Sjøgren
som möjligt' 53 timmar!" asjo@koldfront.dk