Rumah >Operasi dan penyelenggaraan >Keselamatan >Apakah teknik biasa untuk pangkalan data MySQL?
1. Bagaimana untuk memilih jenis pelayan?
Maksud setiap parameter dalam tetingkap konfigurasi pelayan MySQL adalah seperti berikut.
Pilihan ini digunakan untuk menentukan jenis konfigurasi pelayan. Klik butang bawah di sebelah kanan pilihan ini untuk melihat 3 pilihan.
Maksud khusus bagi tiga pilihan adalah seperti berikut:
Pilihan ini mewakili stesen kerja desktop peribadi biasa untuk pembangunan. Andaikan terdapat berbilang aplikasi desktop yang berjalan pada mesin. Konfigurasikan pelayan MySQL untuk menggunakan sumber sistem yang minimum.
Mesin Pelayan: Pilihan ini mewakili pelayan MySQL boleh dijalankan bersama-sama dengan aplikasi lain, seperti FTP, e-mel dan pelayan web. Pelayan MySQL dikonfigurasikan untuk menggunakan bahagian sumber sistem yang sesuai.
Mesin Pelayan DedicatedMySQL: Pilihan ini mewakili pelayan yang hanya menjalankan perkhidmatan MySQL. Diandaikan bahawa tiada aplikasi lain sedang berjalan. Pelayan MySQL dikonfigurasikan untuk menggunakan semua sumber sistem yang tersedia. Sebagai seorang pemula, disyorkan untuk memilih pilihan [Mesin Pembangunan], yang menggunakan kurang sumber sistem.
2. Bagaimana hendak menggunakan aksara khas dalam MySQL?
Simbol seperti tanda petikan tunggal ('), tanda petikan berganda ("), garis miring ke belakang (), dll. Simbol ini tidak boleh dimasukkan secara langsung dan digunakan dalam MySQL, jika tidak, ia akan menghasilkan hasil yang tidak dijangka. Dalam MySQL, Watak istimewa ini dipanggil aksara melarikan diri dan perlu bermula dengan simbol garis miring ke belakang ('') apabila memasukkan, oleh itu, apabila menggunakan petikan tunggal dan petikan berganda, anda hendaklah memasukkan (') atau (") masing-masing. Apabila memasukkan garis miring ke belakang, anda hendaklah. Input (), aksara khas lain termasuk carriage return (), suapan baris (), tab (ab), ruang belakang (), dsb. Apabila memasukkan aksara khas ini ke dalam pangkalan data, ia mesti dilepaskan.
3. Bagaimanakah MySQL melakukan perbandingan rentetan sensitif huruf besar-besaran?
MySQL tidak sensitif huruf besar-besaran di bawah platform Windows, jadi fungsi perbandingan rentetan tidak sensitif huruf besar-besaran. Untuk melakukan perbandingan sensitif huruf besar-besaran, gunakan kata kunci BINARI sebelum rentetan. Sebagai contoh, secara lalai, hasil pulangan 'a'='A' ialah 1. Jika kata kunci BINARI digunakan, hasil BINARY'a'='A' ialah 0. Dalam kes sensitiviti kes, 'a' dan 'A' Tidak sama.
Kemahiran pengoptimuman pernyataan MySQL
Pengoptimuman prestasi pangkalan data MySQL adalah satu-satunya cara untuk pembangunan pangkalan data MySQL Pengoptimuman prestasi pangkalan data MySQL juga menjadi saksi kepada kemajuan pangkalan data MySQL. Berikut ialah pengenalan kepada pengoptimuman pernyataan MySQL Beberapa petua:
1 Cuba elakkan daripada menggunakan != atau <> operator dalam klausa where, jika tidak enjin akan berhenti menggunakan indeks dan melakukan operasi penuh imbasan meja.
Untuk mengoptimumkan pertanyaan, imbasan jadual penuh harus dielakkan sebaik mungkin. Kemudian, kita harus mengutamakan membina indeks pada lajur yang terlibat dalam tempat dan susunan mengikut.
3 Cuba elakkan membuat pertimbangan nilai nol pada medan dalam klausa where, jika tidak enjin akan berhenti menggunakan indeks dan melakukan imbasan jadual penuh, seperti:
pilih id daripada t di mana num adalah null
Anda boleh menetapkan nilai lalai 0 pada num, pastikan tiada nilai null dalam lajur num dalam jadual, dan kemudian bertanya seperti ini:
pilih id dari t di mana num=0
4. Cuba elakkan menggunakan atau dalam klausa where untuk menyambung keadaan, jika tidak, enjin akan berhenti menggunakan indeks dan melakukan imbasan jadual penuh, seperti:
pilih id daripada t di mana num=10 atau num=20
Anda boleh bertanya seperti ini:
pilih id daripada t di mana num=10
union all
pilih id daripada t di mana num=20
5. Pertanyaan berikut juga akan menghasilkan imbasan jadual penuh: (tidak boleh mendahului tanda peratus)
pilih id daripada t di mana nama seperti '�c%'
Untuk meningkatkan kecekapan, anda boleh Pertimbangkan carian teks penuh.
6. In dan bukan in juga harus digunakan dengan berhati-hati, jika tidak, ia akan membawa kepada imbasan jadual penuh, seperti:
pilih id daripada t di mana num dalam (1,2, 3)
Untuk nilai berterusan, jangan gunakan in jika anda boleh menggunakan antara:
pilih id daripada t di mana nombor antara 1 dan 3
7 parameter dalam klausa where, juga Akan menghasilkan imbasan jadual penuh. Oleh kerana SQL menyelesaikan pembolehubah tempatan hanya pada masa jalan, pengoptimum tidak boleh menangguhkan pemilihan pelan akses sehingga masa jalan ia mesti membuat pemilihan pada masa penyusunan. Jika pelan akses dibina pada masa penyusunan dan nilai pembolehubah tidak diketahui, nilai ini tidak boleh digunakan sebagai input untuk pemilihan indeks. Sebagai contoh, pernyataan berikut akan melakukan imbasan jadual penuh:
pilih id daripada t di mana num=@num
boleh ditukar untuk memaksa pertanyaan menggunakan indeks:
pilih id daripada t dengan( indeks (nama indeks)) di mana num=@num
8 Cuba elakkan operasi ungkapan pada medan dalam klausa where, yang akan menyebabkan enjin berhenti menggunakan indeks dan lakukan imbasan jadual penuh. Contohnya:
pilih id daripada t di mana num/2=100
harus ditukar kepada:
pilih id daripada t di mana num=100*2
9. Cuba elakkan melakukan operasi fungsi pada medan dalam klausa where, yang akan menyebabkan enjin berhenti menggunakan indeks dan melakukan imbasan jadual penuh. Contohnya:
pilih id daripada t di mana subrentetan(nama,1,3)='abc'–id nama bermula dengan abc
pilih id daripada t tempat datediff(hari,dicipta,' 2005-11-30′)=0–'2005-11-30′Id yang dijana
hendaklah ditukar kepada:
pilih id daripada t di mana nama seperti 'abc%'
pilih id daripada t tempat createate>='2005-11-30′ dan createate<'2005-12-1′
10. Jangan lakukan fungsi, operasi aritmetik atau operasi ungkapan lain di sebelah kiri "=" dalam klausa where, jika tidak, sistem mungkin tidak dapat menggunakan indeks dengan betul.
11 Apabila menggunakan medan indeks sebagai syarat, jika indeks adalah indeks komposit, medan pertama dalam indeks mesti digunakan sebagai syarat untuk memastikan sistem menggunakan indeks, jika tidak indeks akan. not akan digunakan, dan susunan medan hendaklah selaras dengan susunan indeks sebanyak mungkin.
12 Jangan tulis pertanyaan yang tidak bermakna Contohnya, jika anda perlu menjana struktur jadual kosong:
pilih col1,col2 ke dalam #t dari t di mana 1=0
Ini Kod kelas tidak akan mengembalikan sebarang set hasil, tetapi akan menggunakan sumber sistem Ia harus ditukar kepada ini:
buat jadual #t(…)
13 exists digunakan dan bukannya in. Pilihan yang baik:
pilih num dari a di mana num in(pilih num daripada b)
Ganti dengan pernyataan berikut:
pilih num dari a where exists(pilih 1 dari b where num=a.num)
14. Tidak semua indeks adalah sah untuk pertanyaan SQL mengoptimumkan berdasarkan data dalam jadual pertindihan dalam lajur indeks, pertanyaan SQL mungkin Indeks tidak akan digunakan Sebagai contoh, jika terdapat jantina bidang dalam jadual, dan hampir separuh adalah lelaki dan separuh wanita, maka walaupun indeks dibina berdasarkan jantina, ia akan. tidak mempunyai sebarang kesan ke atas kecekapan pertanyaan.
15 Lebih banyak indeks, lebih baik Walaupun indeks boleh meningkatkan kecekapan pilihan yang sepadan, ia juga mengurangkan kecekapan sisipan dan kemas kini, kerana indeks mungkin dibina semula semasa memasukkan atau mengemas kini. ? Pengindeksan memerlukan pertimbangan yang teliti dan akan bergantung pada keadaan. Adalah lebih baik untuk tidak mempunyai lebih daripada 6 indeks pada jadual Jika melebihi nombor ini, anda perlu mempertimbangkan sama ada perlu untuk membuat indeks pada beberapa lajur yang jarang digunakan.
16 Elakkan mengemas kini lajur data indeks berkelompok sebanyak mungkin, kerana susunan lajur data indeks berkelompok ialah susunan storan fizikal rekod jadual diselaraskan. Ia menggunakan banyak sumber. Jika sistem aplikasi perlu kerap mengemas kini lajur data indeks berkelompok, anda perlu mempertimbangkan sama ada indeks itu perlu dibina sebagai indeks berkelompok.
17 Cuba gunakan medan angka Jika medan yang mengandungi maklumat berangka sahaja, cuba jangan reka bentuknya sebagai medan aksara Ini akan mengurangkan prestasi pertanyaan dan sambungan, dan meningkatkan overhed storan. Enjin membandingkan setiap aksara dalam rentetan satu demi satu apabila memproses pertanyaan dan bergabung, jadi jenis angka hanya perlu dibandingkan sekali dan bukannya satu demi satu.
18. Gunakan varchar/nvarchar dan bukannya char/nchar sebanyak mungkin, kerana pertama sekali, medan panjang berubah mempunyai ruang storan yang kecil dan boleh menjimatkan ruang storan bidang kecil adalah tinggi.
19 Jangan gunakan pilih * dari t di mana-mana, gantikan "*" dengan senarai medan tertentu dan jangan kembalikan sebarang medan yang tidak digunakan.
20 Cuba gunakan pembolehubah jadual dan bukannya jadual sementara. Jika pembolehubah jadual mengandungi sejumlah besar data, maklum bahawa indeks adalah sangat terhad (hanya indeks kunci utama).
21 Elakkan kerap membuat dan memadam jadual sementara untuk mengurangkan penggunaan sumber jadual sistem.
22. Meja sementara tidak boleh digunakan dengan sewajarnya boleh menjadikan rutin tertentu lebih cekap, contohnya, apabila anda perlu berulang kali merujuk jadual besar atau set data tertentu dalam jadual yang biasa digunakan. Walau bagaimanapun, untuk acara sekali sahaja, lebih baik menggunakan jadual eksport.
23 Apabila membuat jadual sementara, jika jumlah data yang disisipkan pada satu masa adalah besar, anda boleh menggunakan pilih ke dan bukannya mencipta jadual untuk mengelak menyebabkan sejumlah besar log meningkat jika jumlahnya data tidak besar, untuk memudahkan sistem Untuk sumber jadual, anda harus membuat jadual dahulu dan kemudian memasukkannya.
24 Jika jadual sementara digunakan, semua jadual sementara mesti dipadamkan secara eksplisit pada akhir prosedur yang disimpan, mula-mula potong jadual, dan kemudian lepaskan jadual ini boleh mengelakkan penguncian jangka panjang sistem meja.
25 Cuba elakkan menggunakan kursor, kerana kursor kurang cekap Jika data yang dikendalikan oleh kursor melebihi 10,000 baris, maka anda harus mempertimbangkan untuk menulis semula.
26 Cuba elakkan operasi transaksi yang besar dan tingkatkan keselarasan sistem.
Atas ialah kandungan terperinci Apakah teknik biasa untuk pangkalan data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!