Alat untuk situasi transfer data, hanya dibangun untuk tujuan teoris, yang mungkin berguna untuk mentransfer sejumlah besar data dari server SQL (2000 atau lebih tinggi) dan/atau oracle (10g atau lebih tinggi) ke lain (SQL> SQL, SQL> Oracle, Oracle> SQL dan Oracle> Oracle).
Biasanya menyalin tabel SQL Server dan/atau Oracle dari satu contoh ke contoh lainnya.
Biasanya kami kemungkinan memutuskan untuk menggunakan wizard impor/ekspor SSMS, paket layanan integrasi atau metode untuk mentransfer data sebagai file teks.
Tetapi masalah mungkin muncul jika kita berbicara tentang tabel dengan lebih dari 300 juta catatan atau 30GB dan lebih banyak jika mereka harus disalin dalam waktu minimum.
Jika kita beruntung tabel ini mungkin memiliki indeks berkerumun di SQL Server atau indeks dengan histogram frekuensi di Oracle. Itulah skenario di mana proyek kecil ini berperan.
Jika kami tidak memiliki indeks berkerumun pada tabel sumber, ada beberapa harapan, kami menerapkan metode baru (sedikit lebih lambat dari yang dikelompokkan, tetapi yang bagus) untuk menyalin data dari tabel tumpukan, baik di Oracle dan SQL Server.
Logikanya sangat sederhana: ini memindai statitics indeks berkerumun di SQL Server, atau histogram di Oracle, dan mendefinisikan kelompok data yang seimbang.
Ini berarti bahwa ia menciptakan banyak kueri seperti halnya utas yang diparametried, dan pertanyaan -pertanyaan tersebut memfilter pada bidang indeks yang dikelompokkan mencoba untuk mendapatkan volume data yang sama masing -masing. Kemudian itu memecat mereka menggunakan sqlbulkcopy .net fw atau oraclebulkcopy dari metode odp.net. Sebagai tumpukan, itu "partisi" tabel dengan fungsi determiniktik dan modul (%% Lockres %% di SQL Server dan RowID di Oracle), dan meluncurkan setiap kueri dalam satu utas.
Kita harus menyarankan bahwa tergantung pada jumlah utas itu adalah proses yang sangat intensif sumber daya dan dalam beberapa kasus konsumsi CPU dapat naik hingga 100% dan panjang antrian disk dapat menyebabkan menunggu lama.
Karena itu, kami sarankan berjalan di server yang berbeda selain sumber data dan tujuan.
Dengan demikian, dengan struktur 2 jaringan dengan dua kartu jaringan 100Mbit di setiap server, kami telah mencapai tarif transfer 190MB/SEG.
Anda harus mengujinya untuk tujuan statistik sebelum berpikir untuk menggunakannya di lingkungan produksi.
Catatan Tambahan: Keuntungan kinerja akan dicapai di bawah sirksunstansi tertentu, dan kadang -kadang tidak akan diperhatikan karena sifat data di dalam kolom berkerumun. Pertama -tama perlu untuk mengklarifikasi bahwa indeks berkerumun menyimpan informasi statistik hanya dari kolom pertama dari indeks senyawa, sehingga menjadi lebih penting bahwa indeks berkerumun menjadi desain yang baik. Kami bermaksud bahwa lebih baik mengikuti ujung memesan bidang dari satu dengan sebagian besar granularitas ke yang kurang. Masalah lain yang mungkin ditemui adalah jumlah data nol. Statistik berbicara tentang data non nol, jadi jika tabel memiliki 80% data nol multithreading tidak akan mendapat manfaat darinya, karena semua data nol disalin dalam satu utas sebagai batch yang unik. Secara alami, kami juga merekomendasikan bahwa tabel tujuan tidak memiliki indeks (untuk memungkinkan beberapa utas insert curah), tidak ada partisi dan tidak terkompresi untuk mempercepat proses memasukkan.
DLL ini dapat dielakkan ke dalam proyek ETL lain yang tidak tergantung atau yang tidak dibangun di atas platform SSIS.