Keskiviikko, 19.3.2003
MySQL-tietokannasta tuotantoversio 4.0.12
MySQL AB on julkaissut avoimeen lähdekoodiin perustuvasta MySQL-tietokantaohjelmistosta ensimmäisen tuotantokäyttöön soveltuvan 4.x-sarjan version, jonka tarkka versionumero on 4.0.12. Ehkä merkittävin uusi ominaisuus on MySQL:n perusversioon mukaan otettu tuki InnoDB-taulutyypille, joka mahdollistaa transaktioiden ja viiteavaimien käytön tietokannassa. Kehittäjille MySQL 4.0 tarjoaa libmysqld-kirjaston, joka helpottaa MySQL:n käyttöä erilaisissa sulautetuissa järjestelmissä.
Uuden MySQL:n luvataan olevan entistä suorituskykyisempi erityisesti insert-lausekkeiden ja teksti-indeksien käsittelyssä. Toimintaa nopeuttaa myös uusi SQL-kyselyvälimuisti, joka MySQL AB:n mukaan nopeuttaa toimintaa erityisesti ympäristöissä, joissa sisällöltään harvoin muuttuviin tietokantatauluihin tehdään jatkuvasti samoja kyselyitä. Tilanne on tyypillinen monissa webpalvelinsovelluksissa, joiden taustajärjestelmissä MySQL on jo muutenkin saavuttanut erittäin merkittävän aseman.
MySQL 4.0.12 on saatavilla Linux, Windows, Solaris, FreeBSD, Mac OS X, HP UX, IBM AIX, QNX, Novell Netware, SCO, SGI Irix ja DEC OSF -käyttöjärjestelmille.
Lue juttu oma, 19.3.2003 00:03. Lähde: mysql.com
Muita aiheeseen liittyviä uutisia
Anonyymi kommentoija, 19.3.2003 08:52:51
transaktioiden ja viiteavaimien käytön
tietokannassa.
Anonyymi kommentoija, 19.3.2003 10:02:35
transaktioiden ja viiteavaimien käytön
tietokannassa.
t.samuli
bungle, 19.3.2003 13:37:37
Tärkein uudistus on mielestäni sub-selectien mukaan tulo. Niiden puute on tehnyt monen tietokantaa käyttävän sovelluksen porttaamisen MySQL:lle aika työlääksi (silloin valinta on usein ollut PostgreSQL).
Heikki Tuurin kehittämä InnoDB taulutyyppi ei ole ainoa taulutyyppi, joka mahdollistaa MySQL:ssä transaktiot. Berkeleyn BDB on toinen mahdollinen. Erona näillä on se, että InnoDB tarjoaa rivitason lukitukset ja viiteavain syntaksin (ja tuen), kun taas BDB taulutyyppi käyttää sivutason lukitusta, eikä tunne tue viiteavaimia. Nuspherellä oli myös Gemini taulutyyppi, joka tarjosi vastaavia ominaisuuksia kuin InnoDB, mutta se on sitten jo toinen tarina, enkä tiedä, onko Geminiä enää kehitetty ja mikä sen tilanne on(käsittääkseni Nusphere luopui siitä, kun he pääsivät sopimukseen MySQL:n kanssa).
MySQL:stä puuttuu edelleen kyllä liuta ominaisuuksia, mutta suuntaus ja kehitys on hyvä. Itse kaipaisin ainakin näkymiä, ja joissain tapauksissa triggereistä ja tallennetuista proseduureista olisi erittäin paljon hyötyä.
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
Anonyymi kommentoija, 19.3.2003 17:28:34
t.samuli
Anonyymi kommentoija, 23.3.2003 17:22:04
"Both tables have to be InnoDB type and there must be an index where the foreign key and the referenced key are listed as the FIRST columns. InnoDB does not auto-create indexes on foreign keys or referenced keys: you have to create them explicitly. "
"In InnoDB versions < 3.23.50 ALTER TABLE or CREATE INDEX should not be used in connection with tables which have foreign key constraints or which are referenced in foreign key constraints: Any ALTER TABLE removes all foreign key constrainst defined for the table. You should not use ALTER TABLE to the referenced table either, but use DROP TABLE and CREATE TABLE to modify the schema. When MySQL does an ALTER TABLE it may internally use RENAME TABLE, and that will confuse the foreign key costraints which refer to the table. A CREATE INDEX statement is in MySQL processed as an ALTER TABLE, and these restrictions apply also to it."
setae, 19.3.2003 16:41:02
"SubSELECTs
Subqueries have been implemented in MySQL version 4.1.
MySQL Server until version 4.0 only supports nested queries of the form INSERT ... SELECT ... and REPLACE ... SELECT .... You can, however, use the function IN() in other contexts. "
bungle, 19.3.2003 16:47:38
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
Anonyymi kommentoija, 19.3.2003 16:18:40
bungle, 19.3.2003 16:45:07
ACID (Atomicity, Consistency, XXXtion, and Durability) ovat määreitä, joilla määritellään se, minkälainen transaktio on ja miten sen tulee toimia:
http://searchdatabase.techtarget.com/sDefinition/0...
Transaktioihin liittyy olennaisesti ns. eristyvyystasot (isolation lavel). Eristyvyys tasoilla voidaan vaikuttaa siihen, minkälaisista tilanteista halutaan selvitä. Korkein eristyvyystaso on Sarjallallinen (tämä tarkoittaa sitä, että transaktiot suoritetaan peräkkäin - ei rinnakkain tai muutenkaan samaan aikaan... näin siis teoriassa). Korkean eristyvyystason käyttäminen tarkoittaa sitä, että tietokanta skaalautuu heikommin ja yhtäaikaisien käyttäjien määrä laskee). SQL Standardi sanoo, että jos eristyvyystasoa ei määritetä tulee käyttää korkeinta tietokannan tarjoamaa eristyvyystasoa. Käytännössä oletuksena on usein kuitenkin READ COMMITTED eristyvyystaso. Oracle on kantana erikoinen, että se ei taida tarjota sarjallistuvia transaktioita, vaan oraclen ns. sarjallistuva transaktio taitaa itseasiassa olla REPEATABLE READ. Tämä johtunee Oraclen implementaatiosta, joka käyttää hyväkseen ns. Rollback Segmenttejä. Tätä lähestymistapaa ei kovinkaan moni muu tietokanta käytä.
Hmm... ei oikein ajatus pysynyt kasassa.
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
jemm, 19.3.2003 19:35:17
1) Tapahtuma alkaa
2) Tyypillisesti useampi tietojen ylläpitokomento (INSERT/UPDATE/DELETE)
3) Jokaisen komennon jälkeen otetaan mahdollinen virhekoodi muuttujiin talteen.
4) Lopussa käydään muuttujat läpi ja tarkistetaann mahdolliset virhekoodit
5a) Jos kaikki on ok, sanotaan COMMIT ja muutokset viedään fyysisesti tietokantaan, eikä mikään sähkökatkos tms saa sitä sen jälkeen enää kadottaa.
5b) Jos yksikin komento epäonnistuu, sanotaan ROLLBACK ja tietokanta palautetaan automaattisesti siihen tilaan, jossa se oli ennen tapahtuman alkua. Koodaajan/ylläpitäjän ei siis tarvitse manuaalisesti palauttaa tilaa ennalleen eikä tietokannan eheys mene rikki.
Toinen virka niillä on tosiaan rinnakkaiskäytön hallinta, josta bungle jo jotain kertoikin. Suomeksi sanottuna sillä voidaan siis hallita hieman paremmin tilanteita, joissa esim. kaksi eri ihmistä on muokkaamassa samaa tietoa tai jossa toinen lukee tietoa, jota ollaan parhaillaan muuttamassa. Lukituksin ja erillisyysastein voi vaikuttaa siihen, miten (epä)turvallista sen haluaa olevan.
Web-sovelluksissa kannattaa niiden tilattoman luonteen vuoksi käyttää optimistista lukitusta. Sen idea on se, että tarkastetaan juuri ennen tallentamista, ovatko tiedot muuttuneet sinä aikana, kun ne otettiin lomakkeelle muokattavaksi. Esim. SQL Serverissä tässä auttaa timestamp/rowversion -tyyppi, jonka arvo muuttuu automaattisesti, kun rivillä muuttuu mikä tahansa tieto.