Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengoptimumkan Pertanyaan MySQL untuk Pemulangan Data Besar?

Bagaimana untuk Mengoptimumkan Pertanyaan MySQL untuk Pemulangan Data Besar?

Linda Hamilton
Linda Hamiltonasal
2024-11-10 06:19:021012semak imbas

How to Optimize MySQL Queries for Large Data Returns?

Tetapan MySQL Optimum untuk Pertanyaan Menyampaikan Jumlah Data yang Besar

Soalan:

Bagaimana saya boleh mengoptimumkan pertanyaan MySQL yang kembali sejumlah besar rekod (kira-kira 50 juta dalam kes ini), mengakibatkan pelaksanaan dilanjutkan kali?

Jawapan:

Tala MySQL untuk Enjin Anda

  • Semak konfigurasi pelayan dan laraskan tetapan dengan sewajarnya.
  • Biasakan diri anda dengan sumber seperti:

    • http://www.mysqlperformanceblog.com/
    • http://forge.mysql.com/wiki/ServerVariables
  • Pertimbangkan menggunakan prosedur tersimpan untuk memproses bahagian pelayan data, mengurangkan keperluan untuk memindahkan set data yang besar ke aplikasi lapisan.

Pertimbangkan Menggunakan Enjin InnoDB

  • InnoDB menawarkan indeks berkelompok yang berpotensi meningkatkan prestasi dengan menyimpan data baris pada halaman yang sama dengan carian indeks .
  • Buat kunci utama komposit termasuk medan indeks untuk mengoptimumkan akses. Ambil perhatian bahawa anda tidak boleh menggunakan AUTO_INCREMENT dengan kunci komposit dalam InnoDB.

Bahagi dan Takluk

  • Kembalikan data dalam kelompok menggunakan prosedur tersimpan yang membolehkan anda untuk menentukan julat nilai untuk medan utama (cth., df_low dan df_high).
  • Dalam lapisan aplikasi, gunakan multi-threading atau gelung untuk mengambil dan memproses data dalam ketulan yang boleh diurus.

Pengoptimuman Tambahan

Selain cadangan di atas, terokai sumber ini untuk prestasi selanjutnya penambahbaikan:

  • http://www.jasny.net/?p=36
  • http://jpipes.com/presentations/perf_tuning_best_practices.pdf

Contoh Khusus Menggunakan InnoDB Stored Prosedur

Contoh berikut menunjukkan cara meningkatkan prestasi menggunakan prosedur tersimpan InnoDB dan aplikasi C# berbilang benang:

  1. Buat prosedur tersimpan untuk mengambil data dalam kelompok:

    create procedure list_results_innodb(
        in p_rc tinyint unsigned,
        in p_df_low int unsigned,
        in p_df_high int unsigned
    )
    begin
        select rc, df, id from results_innodb where rc = p_rc and df between p_df_low and p_df_high;
    end
  2. Membangunkan aplikasi C# yang memanggil prosedur tersimpan dan menambahkan hasil pada koleksi untuk pemprosesan pasca pertanyaan.
  3. Gunakan berbilang urutan untuk mengambil kumpulan data yang berbeza secara serentak.

Dengan mengikuti langkah ini, anda boleh mengurangkan pelaksanaan dengan ketara masa untuk pertanyaan data besar dalam MySQL.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan MySQL untuk Pemulangan Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn