Tetapan MySQL Optimum untuk Mendapatkan Sejumlah Besar Data
Pertanyaan MySQL anda mengalami masalah prestasi yang ketara disebabkan oleh jumlah data yang banyak diambil . Untuk mengoptimumkan prestasi, pertimbangkan strategi berikut:
Pemilihan Enjin Pangkalan Data:
-
Pertimbangkan untuk menukar kepada enjin InnoDB: InnoDB menggunakan berkelompok indeks, yang boleh meningkatkan prestasi dengan ketara untuk pertanyaan yang mengakses data dalam susunan utama. Dalam kes anda, pertanyaan anda mendapatkan semula data tertentu berdasarkan lajur "RC" dan "df", yang indeksnya wujud.
Pengoptimuman Pertanyaan:
-
Pastikan pertanyaan menggunakan indeks: Sahkan bahawa indeks ff sedang digunakan oleh pengoptimum pertanyaan. Jika tidak, pertimbangkan untuk menambah pembayang FORCE INDEX untuk memaksa penggunaan indeks.
-
Optimumkan klausa WHERE: Elakkan menggunakan pertanyaan julat (cth., df > 60) jika boleh. Sebaliknya, gunakan syarat kesamarataan (cth., df = 60) atau hadkan julat kepada subset nilai yang lebih kecil.
Konfigurasi Pelayan:
- Tala tetapan pelayan MySQL: Laraskan tetapan seperti innodb_buffer_pool_size, key_buffer_size dan read_buffer_size untuk mengoptimumkan penggunaan memori pelayan dan peruntukan penimbal.
- Dayakan pemprosesan data sebelah pelayan> Gunakan:
Pertimbangan Tambahan:
- Pendapatan Data Berbilang Thread: Laksanakan seni bina berbilang benang di mana berbilang benang mengambil dan memproses kumpulan data yang lebih kecil secara serentak. Ini boleh mengagihkan beban kerja dengan berkesan dan meningkatkan prestasi keseluruhan.
- Pertanyaan Kelompok: Dapatkan dan proses data dalam kelompok dan bukannya mendapatkan semula keseluruhan keputusan yang ditetapkan sekaligus. Ini mengurangkan beban pelayan dan membolehkan pengurusan memori yang lebih cekap.
- Pertimbangkan untuk membahagikan jadual: Jika boleh, bahagikan jadual kepada dua jadual yang lebih kecil, satu mengandungi data percubaan dan satu lagi mengandungi data kawalan. Ini boleh meningkatkan prestasi untuk pertanyaan yang hanya mendapatkan subset data.
Contoh Prosedur Tersimpan untuk Pemprosesan Bahagian Pelayan:
Jadual InnoDB :
CREATE TABLE `results_innodb` (
`rc` tinyint unsigned NOT NULL,
`df` int unsigned NOT NULL default 0,
`id` int unsigned NOT NULL,
`val` double(10,4) NOT NULL default 0,
`ts` timestamp NOT NULL default now(),
PRIMARY KEY (`rc`, `df`, `id`)
) ENGINE=innodb;
Salin selepas log masuk
Prosedur Tersimpan:
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan MySQL untuk Mendapatkan Sejumlah Besar Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!