120 likes | 208 Views
Daniel Kapča – KAP077. Možnosti paralelismu v databázích. Zpracování multi -user požadavků Při query ( select , join , group , sort) Vytváření velkých indexů Hromadné query (insert, update, delete ) Agregace. Kde můžeme paralelizaci využít?. Vlákna obstarávají jednotlivé uživatele
E N D
Daniel Kapča – KAP077 Možnosti paralelismu v databázích
Zpracování multi-user požadavků Při query(select, join, group, sort) Vytváření velkých indexů Hromadné query (insert, update, delete) Agregace Kde můžeme paralelizaci využít?
Vlákna obstarávají jednotlivé uživatele Vzniká konkurenčnost požadavků Možnost deadlocku Nutnost použití transakcí Multi-user požadavky
Tabulka se rozdělí na bloky po řádcích, sloupcích nebo obou Jednotlivé procesory/jádra pak zpracovávají jednotlivé bloky Případné nevyužité procesory/jádra mohou být vytíženy umísťováním data z jiných procesorů/jáder do front, z kterých jsou postupně odebírány (schéma - spící holič) Tvorba velkých indexů
Rozdělení query na bloky Následné vykonání na jednotlivých procesorech/jádrech Opět můžeme využít systém front Hromadné query
Agregace: • Rozdělení úlohy na bloky řádků • Provedení agregační funkce v jednotlivých blocích • Stromově opakujeme až do finálního výsledku (od spodu nahoru – jako u pavouka sportovních zápasů) Agregace
Vždy je přítomna řídicí jednotka (např. PEC - parallelexecutioncoordinator) • Základní paralelní jednotkou je „Granule“ • BlockRange Granule (podjednotkouPartition) • Partition Granule • Jednotlivé operace, které mohou být paralelizovány jsou děleny na „Granule“ • 2 základní druhy paralelizace: • Serverová (Partition Granule) • Lokální (BlockRange Granule) Query
SELECT * FROM table • SELECT * FROM table1, table2 • SELECT * FROM table1 WHERE x IN (SELECT x FROM table2) • SELECT * FROM table1 WHERE x=y • (krásné využití stromové struktury) • SELECT * FROM table ORDER BY x • (krásné využití merge sortu) Lokální paralelizace
Paralelní obdoba LINQ Součást PFX library Jak pro SQL, tak i pro XML Součástí VS2010 a .NET 4.0 (nyní pouze CTP) var x = from x in data select x; var x = from x in data.AsParallel() select x; plinq
http://www.dba-oracle.com/real_application_clusters_rac_grid/parallelism.htmhttp://www.dba-oracle.com/real_application_clusters_rac_grid/parallelism.htm http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0004557.htm http://www.cs.cmu.edu/~damon2006/pdf/cieslewicz06parallelism.pdf http://www.cs.columbia.edu/~kar/pubsk/simd.pdf http://documents.bmc.com/products/documents/91/79/69179/69179.pdf http://msdn.microsoft.com/en-us/magazine/cc163329.aspx Vlastní úvaha Zdroje