全部产品
Search
文档中心

DataWorks:Mempercepat atau mengendalikan aliran sinkronisasi offline

更新时间:Nov 10, 2025

Topik ini menjelaskan faktor-faktor yang memengaruhi kecepatan sinkronisasi data, cara menyesuaikan konkurensi untuk memaksimalkan kecepatan sinkronisasi, opsi pengendalian aliran pekerjaan, serta solusi untuk skenario sinkronisasi data yang lambat.

Ikhtisar

  • Kecepatan sinkronisasi data dipengaruhi oleh berbagai faktor, seperti konfigurasi tugas, kinerja database, dan kondisi jaringan. Untuk informasi selengkapnya, lihat Faktor yang memengaruhi kecepatan sinkronisasi data.

  • Sinkronisasi data yang lambat dapat terjadi pada berbagai tahap proses. Topik ini menjelaskan solusi untuk kinerja lambat pada setiap tahap tersebut. Untuk informasi selengkapnya, lihat Skenario dan solusi untuk sinkronisasi data yang lambat.

  • Jika kinerja database terbatas, kecepatan sinkronisasi yang lebih tinggi belum tentu lebih baik. Kecepatan tinggi dapat memberikan tekanan berlebihan pada database dan memengaruhi layanan produksi lainnya. Data Integration menyediakan opsi pengendalian aliran yang dapat Anda konfigurasi sesuai kebutuhan. Untuk informasi selengkapnya, lihat Membatasi kecepatan sinkronisasi.

Faktor yang memengaruhi kecepatan sinkronisasi data

Kecepatan sinkronisasi data dipengaruhi oleh faktor-faktor seperti lingkungan database sumber dan tujuan serta konfigurasi tugas. Anda bertanggung jawab utama untuk memantau dan menyetel kinerja, beban, serta kondisi jaringan database sumber dan tujuan.

Faktor-faktor berikut memengaruhi kecepatan sinkronisasi data:

Faktor

Deskripsi

Sumber data

  • Kinerja database: CPU, memori, SSD, jaringan, dan kinerja disk.

  • Konkurensi: Konkurensi yang lebih tinggi pada sumber data menghasilkan beban database yang lebih berat. Database dengan kinerja lebih baik dapat menangani konkurensi yang lebih tinggi. Hal ini memungkinkan Anda mengonfigurasi ekstraksi data konkuren lebih banyak untuk pekerjaan sinkronisasi data.

  • Jaringan: Bandwidth (throughput) dan kecepatan jaringan.

Kelompok sumber daya penjadwalan yang digunakan oleh tugas sinkronisasi offline

Tugas sinkronisasi offline didistribusikan oleh sumber daya penjadwalan untuk dijalankan pada sumber daya eksekusi Data Integration. Penggunaan sumber daya penjadwalan juga memengaruhi efisiensi sinkronisasi secara keseluruhan.

Konfigurasi tugas sinkronisasi offline

  • Kecepatan transfer: Apakah batas atas telah ditetapkan untuk kecepatan sinkronisasi tugas.

  • Konkurensi: Jumlah maksimum thread yang dapat membaca dari sumber atau menulis ke penyimpanan data tujuan secara paralel.

  • Sumber daya WAIT.

  • Pengaturan Bytes: Satu thread memiliki Bytes=1048576. Jika kecepatan jaringan sensitif, timeout dapat terjadi. Dalam kasus ini, atur Bytes ke nilai yang lebih kecil.

  • Apakah indeks dibuat untuk pernyataan query.

Sumber data tujuan

  • Kinerja: CPU, memori, SSD, jaringan, dan kinerja disk.

  • Beban: Beban berlebih pada database tujuan memengaruhi efisiensi penulisan data tugas sinkronisasi.

  • Jaringan: Bandwidth (throughput) dan kecepatan jaringan.

Skenario dan solusi untuk sinkronisasi data yang lambat

Catatan

Untuk informasi selengkapnya tentang log tugas sinkronisasi offline, lihat Menganalisis log sinkronisasi offline.

Skenario sinkronisasi data yang lambat

Fenomena

Penyebab yang Mungkin

Solusi

Menunggu sumber daya penjadwalan

  • Fenomena 1: Log tugas sinkronisasi menunjukkan tugas sedang menunggu gerbang.

  • Fenomena 2: Halaman properti instans menunjukkan waktu tunggu yang lama untuk sumber daya.

Tugas offline didistribusikan oleh kelompok sumber daya penjadwalan ke mesin untuk dieksekusi. Jika jumlah tugas yang berjalan pada kelompok sumber daya penjadwalan mencapai batas atasnya, tugas baru harus menunggu hingga tugas yang sedang berjalan selesai dan melepaskan sumber daya.

Di halaman Operation Center, Anda dapat melihat tugas mana yang sedang menggunakan sumber daya saat tugas saat ini sedang menunggu.

Catatan

Jika Anda menggunakan kelompok sumber daya bersama untuk penjadwalan, migrasikan tugas ke kelompok sumber daya eksklusif atau Serverless untuk eksekusi.

Menunggu sumber daya eksekusi

Log tugas sinkronisasi menunjukkan `wait`.wait

Sisa sumber daya dalam kelompok sumber daya Data Integration tidak cukup untuk menjalankan tugas saat ini.

Sebagai contoh, kelompok sumber daya mendukung maksimal delapan thread konkuren. Tiga tugas dikonfigurasi, masing-masing memerlukan tiga thread konkuren. Jika dua tugas berjalan secara bersamaan, mereka menggunakan enam thread. Kelompok sumber daya hanya memiliki dua thread tersisa. Tugas ketiga, yang memerlukan tiga thread, harus menunggu karena sumber daya tidak mencukupi. Log untuk tugas ini menunjukkan `wait`.

Periksa apakah tugas lain sedang berjalan dan menggunakan banyak sumber daya dalam kelompok sumber daya tersebut. Anda dapat menggunakan solusi berikut untuk mengatasi masalah ini:

Catatan
  • Di halaman Operation Center, Anda dapat melihat penggunaan sumber daya dan informasi tentang tugas yang sedang menggunakan sumber daya saat tugas saat ini sedang menunggu.等待资源

  • Jumlah maksimum thread konkuren yang dapat dijalankan oleh kelompok sumber daya bervariasi berdasarkan spesifikasinya. Untuk informasi selengkapnya, lihat Metrik kinerja dan standar penagihan.

  1. Periksa apakah tugas yang menggunakan sumber daya mengalami kemacetan atau melambat secara signifikan. Jika demikian, selesaikan masalah tersebut terlebih dahulu atau hentikan beberapa tugas tersebut.

  2. Jika tugas-tugas tersebut tidak macet, tunggu hingga selesai dan melepaskan sumber daya. Kemudian, mulai tugas saat ini.

  3. Anda juga dapat menemukan daftar tugas yang sedang menggunakan sumber daya dan pemiliknya. Koordinasikan dengan mereka untuk mengurangi konkurensi tugas mereka.

  4. Anda juga dapat mengurangi konkurensi tugas sinkronisasi saat ini, lalu mengirim ulang dan menerbitkannya.

  5. Anda juga dapat melakukan scale-out pada kelompok sumber daya untuk eksekusi. Untuk informasi selengkapnya, lihat Operasi scale-out dan scale-in.

Tugas sinkronisasi berjalan terlalu lambat

Log tugas sinkronisasi menunjukkan run, tetapi kecepatannya 0. Tugas sedang berjalan. Jika kondisi ini berlangsung lama, klik Detail log untuk melihat detail eksekusi.运行慢Jika Detail log menunjukkan nilai besar untuk parameter WaitReaderTime, hal ini menunjukkan bahwa tugas menunggu lama agar sumber mengembalikan data.查看日志

  • Kunci shard sumber tidak dikonfigurasi dengan benar.

    Pernyataan SQL yang dihasilkan berdasarkan kunci shard untuk membaca data dari database sumber dieksekusi secara lambat.

  • Pernyataan SQL yang digunakan untuk membaca data dari sumber memerlukan waktu lama untuk dieksekusi (misalnya, parameter `where` atau `querySql` pada beberapa plugin).

    Contoh skenario: Tugas sinkronisasi data melambat karena pemindaian tabel penuh. Hal ini terjadi ketika klausa `WHERE` tidak memiliki indeks.

  • Beban database tinggi pada saat sinkronisasi.

  • Terjadi masalah jaringan, seperti bandwidth (throughput) dan kecepatan jaringan.

Catatan

Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet.

  • Untuk mengatasi eksekusi pernyataan yang lambat:

    • Saat mengonfigurasi pernyataan SQL pra- atau pasca-eksekusi:

      • Pastikan indeks ditambahkan ke bidang yang digunakan untuk penyaringan data. Hal ini mencegah tugas sinkronisasi melakukan pemindaian tabel penuh.

      • Hindari atau kurangi pemrosesan kompleks, seperti penggunaan fungsi. Jika diperlukan, lakukan operasi tersebut di database sebelum sinkronisasi.

    • Periksa apakah tabel data sumber berisi terlalu banyak data. Jika demikian, bagi data menjadi beberapa tugas.

    • Kueri log untuk menemukan pernyataan SQL yang terblokir dan konsultasikan dengan administrator basis data untuk solusinya.

  • Periksa beban database pada saat sinkronisasi.

Log tugas sinkronisasi menunjukkan run, tetapi kecepatannya 0. Tugas sedang berjalan. Jika kondisi ini berlangsung lama, klik Detail log untuk melihat detail eksekusi.运行慢Jika Detail log menunjukkan nilai besar untuk parameter WaitWriterTime, hal ini menunjukkan bahwa tugas memerlukan waktu lama untuk menulis data ke tujuan.

  • Pernyataan SQL pra- atau pasca-eksekusi yang dikonfigurasi dalam plugin writer dieksekusi secara lambat (misalnya, pernyataan SQL yang dikonfigurasi dalam parameter `preSql` atau `postSql` pada beberapa plugin).

  • Beban database tinggi pada saat sinkronisasi.

  • Terjadi masalah jaringan, seperti bandwidth (throughput) dan kecepatan jaringan.

Catatan

Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet.

Log menunjukkan run dan kecepatan bukan nol, tetapi proses sinkronisasi lambat.日志

  • Kunci shard untuk tugas database relasional tidak dikonfigurasi dengan benar. Hal ini menyebabkan pengaturan konkurensi tidak efektif, dan tugas berjalan dengan satu thread saja.

  • Konkurensi diatur terlalu rendah.

  • Sejumlah besar data kotor dihasilkan selama sinkronisasi, yang memengaruhi kecepatan.

  • Masalah kinerja database ada.

    Catatan

    Database dengan kinerja lebih baik dapat menangani konkurensi yang lebih tinggi. Hal ini memungkinkan Anda mengonfigurasi konkurensi yang lebih tinggi untuk pekerjaan sinkronisasi data.

  • Terjadi masalah jaringan, seperti bandwidth (throughput) dan kecepatan jaringan.

Catatan

Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet.

  1. Konfigurasikan kunci shard dengan benar. Untuk informasi selengkapnya tentang mengonfigurasi kunci shard tugas, lihat Mengonfigurasi tugas di Antarmuka tanpa kode.

  2. Dalam batas konkurensi maksimum yang didukung oleh kelompok sumber daya, rencanakan konkurensi untuk setiap tugas dan tingkatkan konkurensi untuk tugas saat ini sesuai kebutuhan.

    Di Antarmuka tanpa kode, konfigurasikan konkurensi untuk menentukan tingkat paralelisme tugas. Kode berikut menunjukkan cara mengonfigurasi konkurensi di editor kode.日志

    Catatan

    Jumlah maksimum thread konkuren yang dapat dijalankan oleh kelompok sumber daya bervariasi berdasarkan spesifikasinya. Untuk informasi selengkapnya, lihat Metrik kinerja dan standar penagihan.

  3. Tangani data kotor. Untuk informasi selengkapnya tentang data kotor, lihat Data Integration.

  4. Saat mengatur konkurensi untuk tugas terdistribusi, jumlah mesin dalam kelompok sumber daya tidak boleh melebihi konkurensi maksimum satu mesin dalam kelompok tersebut.

  5. Saat menyinkronkan data antar cloud atau wilayah, bangun koneksi jaringan dan gunakan jaringan internal untuk sinkronisasi. Untuk informasi selengkapnya tentang solusi konektivitas jaringan, lihat Solusi konektivitas jaringan.

  6. Periksa beban database.

Batasi kecepatan sinkronisasi

Secara default, tugas sinkronisasi Data Integration tidak dikendalikan alirannya. Tugas berjalan dengan kecepatan tertinggi yang mungkin dalam batas konkurensi yang dikonfigurasi. Namun, kecepatan tinggi dapat memberikan tekanan berlebihan pada database dan memengaruhi layanan produksi lainnya. Data Integration menyediakan opsi pengendalian aliran yang dapat Anda konfigurasi sesuai kebutuhan. Setelah Anda mengaktifkan pengendalian aliran, kami menyarankan agar Anda mengatur kecepatan maksimum tidak lebih dari 30 MB/detik. Kode berikut menunjukkan cara mengonfigurasi pengendalian aliran di editor kode untuk menetapkan batas bandwidth 1 MB/detik.

"setting": {
      "speed": {
         "throttle": true // Mengaktifkan pengendalian aliran.
        "mbps": 1, // Laju spesifik.
      }
    }
  • Parameter throttle dapat diatur ke true atau false:

    • Saat throttle diatur ke true, pengendalian aliran diaktifkan. Anda harus menetapkan nilai data spesifik untuk mbps. Jika Anda tidak menetapkan mbps, program akan mengalami error atau laju menjadi abnormal.

    • Saat throttle diatur ke false, pengendalian aliran dinonaktifkan, dan konfigurasi mbps diabaikan.

  • Ukuran lalu lintas adalah metrik Data Integration dan tidak mewakili lalu lintas kartu antarmuka jaringan (NIC) yang sebenarnya. Biasanya, lalu lintas NIC adalah satu hingga dua kali lipat lalu lintas saluran. Overhead lalu lintas aktual bergantung pada serialisasi data sistem penyimpanan data.

  • File semi-terstruktur tunggal tidak memiliki kunci shard. Untuk beberapa file, Anda dapat menetapkan batas kecepatan pekerjaan. Namun, batas kecepatan efektif juga terkait dengan jumlah file.

    Sebagai contoh, untuk n file, batas kecepatan efektif adalah n MB/detik:

    • Jika Anda menetapkan batas kecepatan ke n+1 MB/detik, data disinkronkan pada kecepatan n MB/detik.

    • Jika Anda menetapkan batas kecepatan ke n-1 MB/detik, data disinkronkan pada kecepatan n-1 MB/detik.

  • Untuk database relasional, Anda harus mengonfigurasi kunci shard agar batas kecepatan efektif di beberapa thread. Database relasional biasanya hanya mendukung kunci shard numerik. Namun, database Oracle mendukung kunci shard numerik dan string.

FAQ

  • FAQ untuk sinkronisasi offline.

  • Parameter `BatchSize` atau `maxfilesize` mengontrol jumlah catatan dalam pengiriman batch. Nilai yang sesuai dapat mengurangi interaksi jaringan antara Data Integration dan database serta meningkatkan throughput. Namun, jika nilai ini terlalu besar, error kehabisan memori (OOM) dapat terjadi dalam proses sinkronisasi. Jika error ini terjadi, lihat FAQ untuk sinkronisasi offline.

Lampiran: Periksa paralelisme aktual

Di halaman detail log tugas sinkronisasi data, temukan entri log dalam format JobContainer - Job set Channel-Number to 2 channels.. Nilai channels adalah tingkat paralelisme aktual untuk tugas tersebut.查看实际并发

Lampiran: Hubungan antara paralelisme dan penggunaan sumber daya

Dalam kelompok sumber daya eksklusif, penggunaan sumber daya ditentukan oleh hubungan antara konkurensi dan CPU, serta antara konkurensi dan memori:

  • Hubungan antara konkurensi dan CPU

    Dalam kelompok sumber daya eksklusif, rasio vCPU terhadap konkurensi adalah 1:2. Sebagai contoh, mesin ECS dengan 4 vCPU dan memori 8 GiB menyediakan kuota konkurensi 8 untuk kelompok sumber daya eksklusifnya. Kelompok ini dapat menjalankan maksimal delapan tugas sinkronisasi offline dengan konkurensi 1, atau empat tugas sinkronisasi offline dengan konkurensi 2.

    Jika konkurensi yang diperlukan oleh tugas baru yang dikirim ke kelompok sumber daya eksklusif lebih besar daripada sisa kuota konkurensi kelompok tersebut, tugas baru harus menunggu. Tugas tersebut akan berjalan setelah tugas yang sedang berjalan di kelompok selesai dan sisa kuota konkurensi mencukupi untuk tugas baru tersebut.

    Catatan

    Jika konkurensi yang diatur untuk tugas baru melebihi kuota konkurensi maksimum kelompok sumber daya eksklusif, tugas tersebut akan terjebak secara permanen dalam status menunggu. Misalnya, hal ini terjadi jika Anda mengirim tugas dengan konkurensi 10 ke kelompok sumber daya eksklusif pada mesin ECS dengan 4 vCPU dan memori 8 GiB. Karena kelompok sumber daya mengalokasikan sumber daya berdasarkan urutan pengiriman, tugas berikutnya juga akan diblokir.

  • Hubungan antara konkurensi dan memori

    Dalam kelompok sumber daya eksklusif, memori yang ditempati oleh satu tugas dihitung sebagai Min{768 + (Konkurensi - 1) × 256, 8029} MB. Namun, Anda dapat mengganti perhitungan ini dalam pengaturan tugas. Di editor kode, atur jalur JSON $.setting.jvmOption.jvm

    Pastikan total memori yang digunakan oleh semua tugas yang berjalan setidaknya 1 GB lebih kecil dari total memori semua mesin dalam kelompok sumber daya eksklusif. Hal ini memungkinkan tugas berjalan lancar. Jika kondisi ini tidak terpenuhi, mekanisme Linux OOM Killer dapat memaksa menghentikan tugas.

    Catatan

    Jika Anda tidak menggunakan editor kode untuk meningkatkan memori tugas, Anda hanya perlu mempertimbangkan batas kuota konkurensi kelompok sumber daya eksklusif saat mengirim tugas.

Lampiran: Kecepatan Sinkronisasi

Kecepatan baca dan tulis sangat bervariasi di antara sumber data yang berbeda. Bagian berikut menjelaskan kecepatan sinkronisasi single-thread rata-rata untuk sumber data khas dalam kelompok sumber daya eksklusif:

  • Kecepatan single-thread rata-rata untuk plugin Writer yang berbeda

    Writer

    Kecepatan single-thread rata-rata (KB/detik)

    AnalyticDB for PostgreSQL

    147,8

    AnalyticDB for MySQL

    181,3

    ClickHouse

    5.259,3

    DataHub

    45,8

    DRDS

    93,1

    Elasticsearch

    74,0

    FTP

    565,6

    GDB

    17,1

    HBase

    2.395,0

    hbase20xsql

    37,8

    HDFS

    1.301,3

    Hive

    1.960,4

    HybridDB for MySQL

    323,0

    HybridDB for PostgreSQL

    116,0

    Kafka

    0,9

    LogHub

    788,5

    MongoDB

    51,6

    MySQL

    54,9

    ODPS

    660,6

    Oracle

    66,7

    OSS

    3.718,4

    OTS

    138,5

    PolarDB

    45,6

    PostgreSQL

    168,4

    Redis

    7.846,7

    SQLServer

    8,3

    Stream

    116,1

    TSDB

    2,3

    Vertica

    272,0

  • Kecepatan single-thread rata-rata untuk plugin Reader yang berbeda

    Reader

    Kecepatan single-thread rata-rata (KB/detik)

    AnalyticDB for PostgreSQL

    220,3

    AnalyticDB for MySQL

    248,6

    DRDS

    146,4

    Elasticsearch

    215,8

    FTP

    279,4

    HBase

    1.605,6

    hbase20xsql

    465,3

    HDFS

    2.202,9

    Hologres

    741,0

    HybridDB for MySQL

    111,3

    HybridDB for PostgreSQL

    496,9

    Kafka

    3.117,2

    LogHub

    1.014,1

    MongoDB

    361,3

    MySQL

    459,5

    ODPS

    207,2

    Oracle

    133,5

    OSS

    665,3

    OTS

    229,3

    OTSStream

    661,7

    PolarDB

    238,2

    PostgreSQL

    165,6

    RDBMS

    845,6

    SQLServer

    143,7

    Stream

    85,0

    Vertica

    454,3