sql >> Databáze >  >> RDS >> Mysql

diff 2 velké databázové tabulky

Podívejte se na open-source Percona Toolkit --- konkrétně na pt-table-sync utility.

Jeho primárním účelem je synchronizace tabulky MySQL s její replikou, ale protože jejím výstupem je sada příkazů MySQL nezbytných k vyrovnání rozdílů mezi dvěma tabulkami, je přirozené, že je lze porovnávat.

To, co ve skutečnosti dělá pod kapotou, je trochu složité a ve skutečnosti používá různé přístupy v závislosti na tom, co může říct o vašich tabulkách (indexy atd.), ale jednou ze základních myšlenek je, že provádí rychlé kontrolní součty CRC32 na kouscích indexů a pokud se kontrolní součty neshodují, prozkoumá tyto záznamy blíže. Všimněte si, že tato metoda je hodně rychlejší než lineární procházení obou indexů a jejich porovnávání.

Dostane vás to ale jen na část cesty. Protože vygenerované příkazy jsou určeny k synchronizaci repliky s jejím masterem, jednoduše nahrazují aktuální obsah repliky pro všechny různé záznamy. Jinými slovy, generované příkazy upravují all pole v záznamu (nejen ta, která se změnila). Jakmile tedy použijete pt-table-sync abyste našli rozdíly, museli byste výsledky do něčeho zabalit, abyste mohli prozkoumat různé záznamy porovnáním jednotlivých polí v záznamu.

Ale pt-table-sync dělá to, co jste již věděli, že je nejtěžší:detekce rozdílů, skutečně rychle. Je to napsáno v Perlu; zdroj by měl poskytovat dobrou strouhanku.



  1. Jak změnit sloupec PG na hodnotu NULLABLE TRUE?

  2. O pglogickém výkonu

  3. SQLiteException pomocí WHERE +KEY_Date+='+date+'

  4. Prague PostgreSQL Developer Day 2016