Anda di halaman 1dari 3

Sebagai database Anda tumbuh, Anda akan menemukan diri Anda terus mencari cara untuk

mengekstrak
performa yang lebih baik dari mereka. Sementara kecepatan prosesor, disk yang lebih besar dan lebih
cepat,
dan memori tambahan tentu ada hubungannya dengan kinerja,
mereka di luar lingkup diskusi ini. Sebaliknya, maksud dari bab ini adalah untuk mengajar
Anda beberapa teknik untuk meningkatkan kinerja server dan query menggunakan alat-alat yang
tersedia
dalam MySQL untuk memastikan bahwa Anda mendapatkan kinerja terbaik dari Anda
MySQL setup.
MySQL lebih baru fitur, seperti rutinitas disimpan dan subqueries, dapat secara signifikan
menyederhanakan operasi database yang rumit, tetapi karena relatif baru ness mereka, tidak
belum sepenuhnya dioptimalkan dan jadi selalu mengeluarkan beberapa biaya kinerja. Bab ini
menganggap masing-masing fitur dan menawarkan beberapa tips untuk membantu Anda meningkatkan
mereka
kinerja.
Desain Database adalah aspek lain yang perlu dipertimbangkan ketika mendiskusikan kinerja. Berbagai
strategi untuk mengoptimalkan meja untuk performa yang lebih baik, oleh karena itu, juga merupakan
bagian dari
bab. Sebagian besar optimalisasi yang harus Anda lakukan, bagaimanapun, pertama melibatkan
menyempurnakan Anda
pertanyaan, menambah indeks, dan sebagainya. Oleh karena itu, optimasi query dianggap
pertama dalam bab ini.
Mengoptimalkan Query
Salah satu tempat pertama untuk melihat untuk meningkatkan kinerja adalah query, terutama yang
yang berjalan sering. keuntungan besar dapat dicapai dengan menganalisa query dan menulis ulang
lebih
efisien. Anda dapat menggunakan query MySQL lambat log (dijelaskan dalam Bab 12) untuk
mendapatkan
Ide yang mungkin pertanyaan fine-tuned, dan kemudian mencoba menerapkan beberapa teknik
dalam bagian berikut untuk meningkatkan kinerja mereka.
Pengindeksan
Sejumlah mengejutkan orang dalam meminta informasi forum online tentang lambat
pertanyaan tanpa harus mencoba untuk menambahkan indeks bidang yang sering diakses. Ketika Anda
tahu dari Bab 3, tabel dengan kolom yang sering diakses dapat dipesan
dengan menciptakan indeks. Indeks poin menempatkan pada database di mana spesifik data
terletak, dan menciptakan suatu index pada sebuah lapangan macam informasi dalam bidang tersebut.
Ketika
server memerlukan untuk mengakses informasi tersebut untuk mengeksekusi query, ia tahu mana harus
mencari
karena titik indeks ke lokasi yang relevan.
Pengindeksan bahkan lebih penting pada permintaan multitable. Jika perlu waktu untuk melakukan
meja penuh scan pada satu meja, bayangkan berapa lama lagi akan mengambil jika Anda memiliki
beberapa
tabel untuk memeriksa. Jika optimalisasi pertanyaan Anda adalah tujuan, hal pertama yang harus
dilakukan adalah mencoba
menerapkan indeks.
Menentukan bidang yang harus diindeks melibatkan beberapa pertimbangan. Jika Anda
memiliki bidang yang terlibat dalam pencarian, pengelompokan, atau pengurutan, pengindeksan
kemungkinan besar akan mengakibatkan
keuntungan kinerja. Ini termasuk bidang yang merupakan bagian dari operasi atau bergabung dengan
bidang yang
muncul dengan klausa seperti WHERE, GROUP BY, atau ORDER BY.

Perhatikan contoh berikut:


SELECT a.AircraftID, DARI at.AircraftName
SEBAGAI sebuah pesawat JOIN aircrafttype AS di
ON a.AircraftTypeID = at.AircraftTypeID;
Bidang yang harus diindeks di sini adalah aircraft.AircraftTypeID dan aircrafttype
AircraftTypeID karena mereka bagian dari sebuah bergabung.. Jika query ini biasanya diulang
dengan
sama WHERE atau HAVING clause, maka bidang-bidang yang digunakan dalam ketentuan
tersebut juga akan
pilihan yang baik untuk pengindeksan.
Faktor lain untuk dipertimbangkan di sini adalah bahwa indeks pada bidang dengan banyak
duplikat
nilai tidak akan menghasilkan hasil yang baik. Sebuah kolom tabel yang berisi hanya "ya" atau
"tidak"
nilai tidak akan diperbaiki dengan pengindeksan. Di sisi lain, bidang di mana nilai
yang unik (misalnya, nomor Jaminan Sosial karyawan) bisa mendapatkan keuntungan besar
pengindeksan.
Anda dapat mengaitkan beberapa indeks nonunique dengan meja untuk meningkatkan kinerja.
Tidak ada batas untuk jumlah indeks nonunique yang dapat dibuat.
Mengambil ini untuk ekstrem logis, maka, Anda mungkin berpikir bahwa indeks lebih,
meriah. Ini adalah kekeliruan: Menambahkan indeks tidak selalu meningkatkan kinerja.
meja kecil, misalnya, tidak perlu pengindeksan. Selain itu, indeks setiap mengambil
ruang tambahan di medan setiap disk diindeks membutuhkan MySQL untuk menyimpan
informasi
untuk setiap record dalam bidang itu dan lokasinya dalam database. Seperti indeks Anda
membangun, tabel ini mulai menggunakan lebih banyak ruang. Selanjutnya, pengindeksan
kecepatan
pencarian, tapi memperlambat Operasi tulis, seperti INSERT, DELETE, atau UPDATE.
Sampai Anda bekerja dengan pengindeksan pada database Anda, beberapa upaya pertama Anda
mungkin tidak
mencapai mendapatkan kinerja banyak.
counter administratif tertentu dapat membantu Anda memantau indeks Anda atau datang
dengan kandidat untuk menambahkan indeks. Baik SHOW STATUS atau ExtendedStatus
mysqladmin
perintah menampilkan nilai untuk mempertimbangkan dalam hal indeks.
• Jika indeks Anda bekerja, nilai Handler_read_key harus tinggi. Ini
Nilai total merupakan jumlah kali merekam dibacakan oleh nilai indeks. Sebuah rendah
nilai menunjukkan bahwa peningkatan kinerja tidak banyak yang telah dicapai oleh
tambah indeks karena indeks tersebut tidak sering digunakan.
• Nilai tinggi untuk Handler_read_rnd_next berarti query Anda berjalan
tidak efisien dan pengindeksan harus dianggap sebagai obat. Nilai ini
menunjukkan jumlah permintaan untuk membaca baris berikutnya secara berurutan. Ini
terjadi ketika sebuah tabel dipindai secara berurutan dari record pertama sampai terakhir
untuk mengeksekusi query. Untuk pertanyaan sering, ini merupakan pemborosan sumber daya.
Indeks terkait poin langsung ke record (s), jadi ini meja penuh scan
tidak perlu terjadi. Buruk indeks berfungsi juga bisa mengakibatkan tinggi
nomor di sini.

Anda mungkin juga menyukai