MySQL sežere vaše data

Podobné dokumenty
InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Databázové systémy Cvičení 5.2

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databáze I. Přednáška 4

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

SQL. relační databázový systém. v úvodní kurz jazyka SQL

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Sada 1 - PHP. 14. Úvod do jazyka SQL


Nastavení propojení s eshopem

Semestrální práce z DAS2 a WWW

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Měřící systém se vzdáleným přístupem. Databáze

Jazyk SQL databáze SQLite. připravil ing. petr polách

PG 9.5 novinky ve vývoji aplikací

6. SQL složitější dotazy, QBE

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databázové systémy I

Verzování a publikace dat na webu za pomoci PostgreSQL

Použití databází na Webu

by: Ing. Jan Steringa

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Úvod do databázových systémů

Dotazovací jazyk SQL I

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

- sloupcové integritní omezení

Tabulka fotbalové ligy

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

MySQL manuál. Copyright: Adam Jun Stránky manuálu:

Max Communicator 9. Přístup do databáze a vyčítání hodnot měření externími aplikacemi

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Novinky ve starém dobrém SQL světě OpenAlt, 2014/11/02

Database systems. Normal forms

Nastavení propojení s eshopem

Vkládání, aktualizace, mazání

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Optimalizace dotazů a databázové transakce v Oracle

Databázové systémy. Cvičení 6: SQL

Dotazování v relačním modelu a SQL

Zkouškový příklad 4IT218 Rezervační systém zážitkové agentury. Karel Kohout FIS VŠE

Využití XML v DB aplikacích

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Konceptuální modelování a SQL

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Structured Query Language SQL

Zobrazování dat pomocí tabulek

Jazyk SQL slajdy k přednášce NDBI001

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

WORKSHEET 1: LINEAR EQUATION 1

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

SQL injection princip a ochrana

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Problém identity instancí asociačních tříd

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

pánská peněženka / men s wallet size: 13,5 x 11 cm pánská peněženka / men s wallet size: 15 x 9,5 cm

Databázové systémy a SQL

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Michal Krátký, Miroslav Beneš

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Virtual private database. Antonín Steinhauser

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

Zadání. Slovníček pojmů. Otázka 18 A7B36DBS

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

MS SQL Server 2008 Management Studio Tutoriál

Materiál ke cvičením - SQL

INDEXY JSOU GRUNT. Pavel Stěhule

Databáze II. 1. přednáška. Helena Palovská

Databáze I. Přednáška 7

SQL injection jak ji možná neznáte Roman Kümmel

Jazyk SQL 3 - DML, DDL, TCL, DCL

KIV/ZIS cvičení 5. Tomáš Potužák

8.2 Používání a tvorba databází

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

Univerzita Pardubice. Centrální správa dokumentů

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

Změny v Tabulce ALTER TABLE nazev_tabulky prikaz1, prikaz2, prikaz3,..., prikazn; -provede změny ve stávající tabulce s názvem "nazev_tabulky"

Transkript:

MySQL sežere vaše data David Karban @davidkarban AWS Certified http://davidkarban.cz/

It s not a bug, it s a feature syndrome

Pravděpodobně znáte indexy. Urychlují dotazy. Mohou být řazené, vzestupně i sestupně - opravdu? CREATE TABLE t(i INT, o INT, INDEX x(i ASC, o DESC)); INSERT INTO t VALUES (1,1), (2,2), (3,3); Vytvořil jsem index nad i, o. Část i je Ascending, část o je Descending, je to tak?

mysql> SHOW INDEX FROM t\g; *************************** 1. row *************************** Collation: A *************************** 2. row *************************** Collation: A

Documented! https://dev.mysql.com/doc/refman/5.7/en/create-index.html "An index_col_name specification can end with ASC or DESC. These keywords are permitted for future extensions for specifying ascending or descending index value storage. Currently, they are parsed but ignored; index values are always stored in ascending order."

Znáte MySQL Engines? Mysql je ve skutečnosti mnoho databází za jedním SQL parserem. Parser přijme SQL dotaz, zpracuje a předá ho ENGINU. ENGINE dotaz dle svých schopností zpracuje. Nejznámější jsou MyISAM a InnoDB. Jen pro jistotu - MyISAM nechcete, věřte mi. Chcete InnoDB. MyISAM engine neumí cizí klíče, takže určitě nejde vytvořit například cizí klíč na druhou tabulku že? Že? Nebo to je aspoň chyba, určitě, musí!

CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=MyISAM ; ukáže pouze klíč, ne FOREIGN KEY constrain SHOW CREATE TABLE child;

ACID Zjednodušeně: Co uložíte, to se Vám už neztratí. V MySQL to umí hlavně InnoDB engine, MyISAM ne. Problém: MySQL občas data neuloží. Ale určitě Vám to řekne, to je přece jasný error. že? Leda by někde v dokumentaci bylo něco co jste nečetli.

Sázka Vsadím se s Váma že provedu INSERT do tabulky v InnoDB engine, data tam nedorazí a MySQL neoznámí chybu. A budu podvádět jen trošku. Jdete do toho? Chci Club maté když vyhraju :).

ALTER TABLE t ADD COLUMN jmeno VARCHAR(128); SHOW CREATE TABLE t; INSERT INTO t VALUES('test', '3testy', 'foo bar'); mysql> INSERT INTO t VALUES('test', '3testy', 'foo bar'); Query OK, 1 row affected, 2 warnings (0.01 sec) WARNINGS! - kdo víte, že mysql vrací i warnings? mysql> SHOW WARNINGS; +---------+------+---------------------------------------------------------+ Level Code Message +---------+------+---------------------------------------------------------+ Warning 1366 Incorrect integer value: 'test' for column 'i' at row 1 Warning 1265 Data truncated for column 'o' at row 1 +---------+------+---------------------------------------------------------+ 2 rows in set (0.00 sec)

Co se stalo? Seznamte se s sql_mode: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html The MySQL server can operate in different SQL modes, and can apply these modes differently for different clients, depending on the value of the sql_mode system variable. DBAs can set the global SQL mode to match site server operating requirements, and each application can set its session SQL mode to its own requirements. Jinak řečeno, MySQL mění své chování pole toho jak máte nastaven sql_mode. Default do mysql 5,7. je mít to prázdné.

SQL Mode TRADITIONAL Make MySQL behave like a traditional SQL database system. A simple description of this mode is give an error instead of a warning when inserting an incorrect value into a column. It is one of the special combination modes listed at the end of this section. Čtete to dobře, give error instead of warning... Bez dalšího komentáře.

Není vše ztraceno MySQL se postupně zlepšuje, problém s INSERT od mysql 5.7 s default konfigurací nenastane, protože TRADITIONAL je default. což mimochodem znamená že pokud migrujete na 5.7 tak Vám v aplikaci můžou přestat fungovat INSERTy. Od MySQL 8 fungují DESC indexy. Cizí klíče sice řešeny nebyly, ale od MySQL 8 jsou i systémové tabulky v InnoDB, takže se dá deaktivovat MyISAM a tím ten problém taky omezit.

Questions? David Karban @davidkarban AWS Certified http://davidkarban.cz/

Chcete vědět více? Školení! MySQL Administrace (2 dny): https://www.root.cz/skoleni/termin/mysql-administrace/ MySQL High performance (2 dny): https://www.root.cz/skoleni/termin/mysql-high-performance/ Pro přihlášené do 31.10. akční ceně za 7.600,- + DPH za jedno školení.