<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Import velkých dat do MySQL</title>
	<atom:link href="http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/</link>
	<description>Dává je jen zřídka, obvykle jim není moc rozumět a často vám ani k ničemu nejsou.</description>
	<lastBuildDate>Wed, 21 Jul 2010 16:31:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: MJJ</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13666</link>
		<dc:creator>MJJ</dc:creator>
		<pubDate>Tue, 27 Oct 2009 21:07:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13666</guid>
		<description>Zdravím.
Technická pozn.: MS Excel 2007 už umí milion řádků.</description>
		<content:encoded><![CDATA[<p>Zdravím.<br />
Technická pozn.: MS Excel 2007 už umí milion řádků.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13310</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Thu, 22 Oct 2009 04:21:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13310</guid>
		<description>Ponechme slovíčkaření stranou. Typický usecase, který řešíme zas a znovu je ruční import dat z externí uživatelské DB, kterou má zákazník vyexportovanou ve formě CSV nebo Excelu. On demand import, který si zákazník dělá sám, typicky neobsahuje milióny záznamů (ještě jsem to ve své praxi neviděl), ale řádově desetitisíce nebo stotisíce záznamů (jen formát XLS množství výrazně omezuje s omezením 65 tis. záznamů na jeden list). Tím že je to on demand, musí bý v aplikaci rutina, která import provádí a tu píšeme pomocí insertů přes JDBC.

Máš pravdu, že pokud bych měl import o 10 mil. záznamech, tak bych to řešil specifickým importem ze strany dodavatele přímo nástroji, které se k DB dodávají. Tenhle problém tu ale neřeším.

Btw. kupodivu jsem nezaznamenal výraznou úsporu času vypnutím constraint.</description>
		<content:encoded><![CDATA[<p>Ponechme slovíčkaření stranou. Typický usecase, který řešíme zas a znovu je ruční import dat z externí uživatelské DB, kterou má zákazník vyexportovanou ve formě CSV nebo Excelu. On demand import, který si zákazník dělá sám, typicky neobsahuje milióny záznamů (ještě jsem to ve své praxi neviděl), ale řádově desetitisíce nebo stotisíce záznamů (jen formát XLS množství výrazně omezuje s omezením 65 tis. záznamů na jeden list). Tím že je to on demand, musí bý v aplikaci rutina, která import provádí a tu píšeme pomocí insertů přes JDBC.</p>
<p>Máš pravdu, že pokud bych měl import o 10 mil. záznamech, tak bych to řešil specifickým importem ze strany dodavatele přímo nástroji, které se k DB dodávají. Tenhle problém tu ale neřeším.</p>
<p>Btw. kupodivu jsem nezaznamenal výraznou úsporu času vypnutím constraint.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: deii</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13296</link>
		<dc:creator>deii</dc:creator>
		<pubDate>Wed, 21 Oct 2009 14:07:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13296</guid>
		<description>Par pripominek:
Import velkych dat neni o stotisicich ale milionech.
Clanek neni o rychlosti importu, ale rychlosti insertu.
Import dat pres inserty je sebevrazda. ;)
Kdyz uz importuju pres inserty, tak si zavislosti behem operace vypinam. Pokud se chci dozvedet o nekonzistenci dat - tak je to dobre vyresit mimo import - pred nebo potom.</description>
		<content:encoded><![CDATA[<p>Par pripominek:<br />
Import velkych dat neni o stotisicich ale milionech.<br />
Clanek neni o rychlosti importu, ale rychlosti insertu.<br />
Import dat pres inserty je sebevrazda. <img src='http://blog.novoj.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Kdyz uz importuju pres inserty, tak si zavislosti behem operace vypinam. Pokud se chci dozvedet o nekonzistenci dat &#8211; tak je to dobre vyresit mimo import &#8211; pred nebo potom.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13132</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Wed, 14 Oct 2009 08:52:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13132</guid>
		<description>Zdá se, že tvrzení, že MyISAM je rychlejší než InnoDB je hodně zastaralá chiméra:

http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

Někde jsem zaspal dobu.</description>
		<content:encoded><![CDATA[<p>Zdá se, že tvrzení, že MyISAM je rychlejší než InnoDB je hodně zastaralá chiméra:</p>
<p><a href="http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/" rel="nofollow">http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/</a></p>
<p>Někde jsem zaspal dobu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13020</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Fri, 09 Oct 2009 08:11:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13020</guid>
		<description>Upravil jsem text článku podle toho, na co jsi Maaartine upozorňoval - skutečně ta MyISAM nevychází o moc líp než InnoDB. Já jsem původně porovnával časy na všechny testy ve třídě, jenže tam se hrozně projevila neefektivita InnoDB v autocommit režimu, z čehož jsem vyvodil špatný závěr. Dík za upozornění - kupodivu tedy MyISAM není výrazně rychlejší a to zmiňované doporučení jsem odstranil. Prostě víc očí víc vidí.</description>
		<content:encoded><![CDATA[<p>Upravil jsem text článku podle toho, na co jsi Maaartine upozorňoval &#8211; skutečně ta MyISAM nevychází o moc líp než InnoDB. Já jsem původně porovnával časy na všechny testy ve třídě, jenže tam se hrozně projevila neefektivita InnoDB v autocommit režimu, z čehož jsem vyvodil špatný závěr. Dík za upozornění &#8211; kupodivu tedy MyISAM není výrazně rychlejší a to zmiňované doporučení jsem odstranil. Prostě víc očí víc vidí.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13019</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Fri, 09 Oct 2009 07:31:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13019</guid>
		<description>Pravda je, že InnoDB v transakci dosahuje podobných výsledků jako MyISAM - taky jsem do těch výsledků čučel pozdě v noci. Tj. možná to s tou MyISAM není zase až o tolik výhodnější jak s InnoDB.

Data tam cpu z Javy přes Springovou podporu executeBatch - tj. asi nejrychlejší způsob, který jsem dokázal vymyslet. Pouze pro otestování LOAD DATA INFILE jsem si vytvořil externí TXT file, který jsem potom funkci předhodil (tam to snad ani nijak jinak nejde). Nejlíp když se koukneš rovnou do testovacího kódu.</description>
		<content:encoded><![CDATA[<p>Pravda je, že InnoDB v transakci dosahuje podobných výsledků jako MyISAM &#8211; taky jsem do těch výsledků čučel pozdě v noci. Tj. možná to s tou MyISAM není zase až o tolik výhodnější jak s InnoDB.</p>
<p>Data tam cpu z Javy přes Springovou podporu executeBatch &#8211; tj. asi nejrychlejší způsob, který jsem dokázal vymyslet. Pouze pro otestování LOAD DATA INFILE jsem si vytvořil externí TXT file, který jsem potom funkci předhodil (tam to snad ani nijak jinak nejde). Nejlíp když se koukneš rovnou do testovacího kódu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maaartin</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13009</link>
		<dc:creator>Maaartin</dc:creator>
		<pubDate>Thu, 08 Oct 2009 23:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13009</guid>
		<description>Naxem jsem nepochopil jesti tam cpes data z Javy nebo z SQL-souboru. Pokud ze souboru, taxe divim ze se ti ho chtelo vytvaret (mnohem vic prace nez pro LOAD DATA INFILE), pokud z Javy taxe divim ze nepises o pouziti PreparedStatement-s ci o executeBatch.

Super, zes udelal takovyhle prehled, ale s necim moc nesouhlasim:

&quot;preferujte MyISAM před InnoDB&quot; - MyISAM je stary netransakcni srot. Sice rychly, ale kdyz se rozsype, tak je vymalovano. Kdyz zjistis ze transakce ci jiny ficurky vznikly po roce nula prece jen potrebujes, pak muzes nejen pracne presypavat data, ale mas zadelano na hafo problemu. Rekl bych to naopak: Kdyz potrebujes rychlost, jen rychlost a to extemne moc, pak MyISAM.

Me navic Tvoje vysledky pro InnoDB prijdou zhruba stejny jako pro MyISAM: Kdyz se to dela dobre, pak oboje je pod 20s; mozna ale spatne vidim, uz je dost pozde.</description>
		<content:encoded><![CDATA[<p>Naxem jsem nepochopil jesti tam cpes data z Javy nebo z SQL-souboru. Pokud ze souboru, taxe divim ze se ti ho chtelo vytvaret (mnohem vic prace nez pro LOAD DATA INFILE), pokud z Javy taxe divim ze nepises o pouziti PreparedStatement-s ci o executeBatch.</p>
<p>Super, zes udelal takovyhle prehled, ale s necim moc nesouhlasim:</p>
<p>&#8220;preferujte MyISAM před InnoDB&#8221; &#8211; MyISAM je stary netransakcni srot. Sice rychly, ale kdyz se rozsype, tak je vymalovano. Kdyz zjistis ze transakce ci jiny ficurky vznikly po roce nula prece jen potrebujes, pak muzes nejen pracne presypavat data, ale mas zadelano na hafo problemu. Rekl bych to naopak: Kdyz potrebujes rychlost, jen rychlost a to extemne moc, pak MyISAM.</p>
<p>Me navic Tvoje vysledky pro InnoDB prijdou zhruba stejny jako pro MyISAM: Kdyz se to dela dobre, pak oboje je pod 20s; mozna ale spatne vidim, uz je dost pozde.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13004</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Thu, 08 Oct 2009 18:20:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13004</guid>
		<description>Faktem je, že když jsem si cvičně implementoval metodu, která LOAD DATA INFILE využívá, tak si dokážu docela dobře představit i produkční využití. Ono to zase tak pracné není, jak jsem si původně myslel.</description>
		<content:encoded><![CDATA[<p>Faktem je, že když jsem si cvičně implementoval metodu, která LOAD DATA INFILE využívá, tak si dokážu docela dobře představit i produkční využití. Ono to zase tak pracné není, jak jsem si původně myslel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LesTR</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-13002</link>
		<dc:creator>LesTR</dc:creator>
		<pubDate>Thu, 08 Oct 2009 15:03:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-13002</guid>
		<description>On je to vždy kompromis : )
Osobně jsem LOAD DATA IN FILE používal pouze při importech do jedné tabulky, nebo když těch dat bylo opravdu hodně, pak už se vynaložené úsilí při přípravě dat vyplatí.</description>
		<content:encoded><![CDATA[<p>On je to vždy kompromis : )<br />
Osobně jsem LOAD DATA IN FILE používal pouze při importech do jedné tabulky, nebo když těch dat bylo opravdu hodně, pak už se vynaložené úsilí při přípravě dat vyplatí.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otec Fura</title>
		<link>http://blog.novoj.net/2009/10/06/import-velkych-dat-do-mysql/comment-page-1/#comment-12987</link>
		<dc:creator>Otec Fura</dc:creator>
		<pubDate>Wed, 07 Oct 2009 12:22:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.novoj.net/?p=614#comment-12987</guid>
		<description>Tak jsem dopsal poslední test - skutečně funkce Load data infile vychází ve výkonnostních statistikách nejlépe. Když jsem nad tím přemýšlel, asi by bylo možné tu naši logiku implementovat v předstihu a do souboru ukládat už vypočtená data. Provázání klíčů by se dalo řešit dodatečnými selecty, ve kterých by se dotáhly přidělené primární klíče pro importované záznamy (do tabulky totiž mohou v našem případě konkurentně přistupovat i další uživatelé, takže fixní hodnoty primárních klíčů nepřipadají v úvahu). Rozhodně by to asi za tu námahu stálo, kdybychom tahle čísla věděli už na začátku. Každopádně jsme teď chytřejší.

Lukáši, díky za komentář.</description>
		<content:encoded><![CDATA[<p>Tak jsem dopsal poslední test &#8211; skutečně funkce Load data infile vychází ve výkonnostních statistikách nejlépe. Když jsem nad tím přemýšlel, asi by bylo možné tu naši logiku implementovat v předstihu a do souboru ukládat už vypočtená data. Provázání klíčů by se dalo řešit dodatečnými selecty, ve kterých by se dotáhly přidělené primární klíče pro importované záznamy (do tabulky totiž mohou v našem případě konkurentně přistupovat i další uživatelé, takže fixní hodnoty primárních klíčů nepřipadají v úvahu). Rozhodně by to asi za tu námahu stálo, kdybychom tahle čísla věděli už na začátku. Každopádně jsme teď chytřejší.</p>
<p>Lukáši, díky za komentář.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
