Dalam mysql, pembayang merujuk kepada "petunjuk pengoptimuman pertanyaan", yang akan menggesa pengoptimum untuk menjana pelan pelaksanaan untuk pengoptimuman dengan cara tertentu, menjadikan pernyataan SQL pengguna lebih fleksibel berdasarkan jadual Peraturan seperti susunan sambungan, kaedah, laluan akses dan selari mempunyai kesan pada pernyataan DML (Bahasa Manipulasi Data).
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Kami boleh menambah ulasan semasa mengendalikan jadual, medan atau indeks untuk meningkatkan kebolehbacaan kod supaya orang lain dapat memahami kod dengan cepat Ini adalah petua untuk orang yang menggunakan pangkalan data yang sama, terdapat satu lagi Petua dipanggil petunjuk, adalah petunjuk kepada pangkalan data.
Apakah pembayang
petunjuk merujuk kepada "petunjuk pengoptimuman pertanyaan", yang akan menggesa pengoptimum untuk mengoptimumkan dengan cara tertentu, membolehkan anda kepada Pernyataan SQL adalah lebih fleksibel, yang akan menjadikan pertanyaan anda lebih cepat, sudah tentu, ia juga mungkin lebih perlahan, semuanya bergantung pada pemahaman anda tentang pengoptimum dan pemahaman anda tentang senario.
Kami tahu bahawa apabila melaksanakan pernyataan SQL, MySQL akan menjana pelan pelaksanaan dan pembayang memberitahu pengoptimum pertanyaan untuk menjana pelan pelaksanaan mengikut cara kami memberitahunya.
Petunjuk boleh bertindak pada pernyataan DML (Bahasa Manipulasi Data) berdasarkan susunan sambungan jadual, kaedah, laluan akses, selari dan peraturan lain adalah seperti berikut:
使用的优化器类型; 基于代价的优化器的优化目标,是all_rows还是first_rows; 表的访问路径,是全表扫描,还是索引扫描,还是直接用rowid; 表之间的连接类型; 表之间的连接顺序; 语句的并行程度;
Petua biasa
Force index FORCE INDEKS
SELECT * FROM tbl FORCE INDEX (FIELD1) …
Abaikan indeks ABAIKAN INDEX
SELECT * FROM tbl IGNORE INDEX (FIELD1, FIELD2) …
Matikan penimbal pertanyaan SQL_NO_CACHE
SELECT SQL_NO_CACHE field1, field2 FROM tbl;
Apabila anda perlu menanyakan data masa nyata dan kekerapan tidak tinggi, anda boleh mempertimbangkan untuk menggunakan buffer Off, iaitu MySQL tidak akan mencari dalam buffer tanpa mengira sama ada SQL ini telah dilaksanakan.Paksa query caching SQL_CACHE
SELECT SQL_CACHE * FROM tbl;
Fungsi ini adalah bertentangan dengan yang sebelumnya, tetapi ia hanya berfungsi apabila query_cache_type dalam my.ini ditetapkan kepada 2.Keutamaan operasi HIGH_PRIORITY
HIGH_PRIORITY boleh digunakan dalam memilih dan memasukkan operasi untuk memberitahu MYSQL bahawa operasi ini diutamakan.SELECT HIGH_PRIORITY * FROM tbl;
Kendalian Lagging LOW_PRIORITY
LOW_PRIORITY boleh digunakan dalam operasi sisipan dan kemas kini untuk memberitahu mysql bahawa operasi ini ketinggalan.update LOW_PRIORITY tbl set field1= where field1= …
Sisipan tertunda INSERT DELAYED
INSERT DELAYED INTO tbl set field1= …
bermakna pelanggan menghantar permintaan sisipan data dan MySQL mengembalikan status OK tetapi sebenarnya tidak laksanakannya Sebaliknya, ia disimpan dalam memori dan beratur, dan kemudian dimasukkan apabila mysql mempunyai ruang.
Faedah penting ialah permintaan sisipan daripada berbilang pelanggan dikumpulkan bersama dan ditulis ke dalam satu blok, yang jauh lebih pantas daripada melakukan banyak sisipan secara bebas.
Kelemahannya ialah ID yang ditambah secara automatik tidak dapat dikembalikan, dan apabila sistem ranap, data yang belum sempat dimasukkan MySQL akan hilang.Pesanan sambungan paksa STRAIGHT_JOIN
SELECT tbl.FIELD1, tbl2.FIELD2 FROM tbl STRAIGHT_JOIN tbl2 WHERE …
Seperti yang dapat dilihat daripada pernyataan SQL di atas, STRAIGHT_JOIN digunakan untuk memaksa MySQL menyambungkan jadual dalam susunan tbl dan tbl2. Jika anda fikir ia adalah lebih cekap untuk menyambung dalam pesanan anda sendiri daripada pesanan yang disyorkan oleh MySQL, anda boleh menggunakan STRAIGHT_JOIN untuk menentukan susunan sambungan.
Tidak biasa digunakan
Memaksa penggunaan jadual sementara SQL_BUFFER_RESULT
SELECT SQL_BUFFER_RESULT * FROM tbl WHERE …
Apabila terdapat banyak data dalam set hasil pertanyaan kami, anda boleh memaksa set keputusan ke dalam jadual sementara melalui pilihan SQL_BUFFER_RESULT, supaya kunci jadual MySQL boleh dikeluarkan dengan cepat (supaya pernyataan SQL lain boleh menanyakan rekod ini), dan ia boleh berkhidmat. pelanggan untuk masa yang lama. Pelanggan menyediakan set rekod yang besar.Pengelompokan menggunakan jadual sementara SQL_BIG_RESULT dan SQL_SMALL_RESULT
SELECT SQL_BUFFER_RESULT FIELD1, COUNT(*) FROM tbl GROUP BY FIELD1;
adalah sah untuk penyataan SELECT dan memberitahu MySQL untuk mengoptimumkan cara menggunakan jadual sementara untuk mengisih pertanyaan GROUP BY dan DISTINCT , SQL_SMALL_RESULT Ini bermakna set hasil adalah sangat kecil dan boleh diisih terus dalam jadual sementara dalam ingatan jika tidak, jika ia sangat besar, ia perlu diisih menggunakan jadual sementara pada cakera.SQL_CALC_FOUND_ROWS
Ia sebenarnya bukan gesaan pengoptimum, dan ia juga tidak menjejaskan rancangan pelaksanaan pengoptimum, tetapi ia akan menyebabkan set hasil dikembalikan oleh mysql untuk memasukkan jumlah bilangan baris yang terjejas oleh ini operasi, yang perlu dipadankan denganFOUND_ROWS()
Penggunaan gabungan.SQL_CALC_FOUND_ROWS
Memberitahu MySQL untuk merekodkan bilangan baris yang diproses kali ini;FOUND_ROWS()
digunakan untuk mendapatkan semula bilangan baris yang direkodkan, yang boleh digunakan pada senario halaman.
Cara umum untuk menulis halaman adalah: mula-mula semak jumlah nombor, kira bilangan halaman, dan kemudian semak butiran halaman tertentu.SELECT COUNT(*) from tbl WHERE …
SELECT * FROM tbl WHERE … limit m,n
Tetapi dengan bantuanSQL_CALC_FOUND_ROWS
, ia boleh dipermudahkan kepada tulisan berikut:SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE … limit m,n;
SELECT FOUND_ROWS();
Yang keduaSELECT
akan kembaliSELECT
pertama ialah jumlah bilangan baris tanpa had, jadi anda hanya perlu melaksanakan pertanyaan yang memakan masa dan kompleks untuk mendapatkan jumlah baris pada masa yang sama.KUNCI DALAM MOD KONGSI, UNTUK KEMASKINI
Begitu juga, kedua-dua ini bukan petua pengoptimuman yang mengawal penyataan SELECT. Ia hanya sah untuk peringkat baris kunci, yang disokong oleh InnoDB.
Meluaskan pengetahuan:
Konsep dan perbezaan
SELECT ... LOCK IN SHARE MODE
Apa yang ditambah ialah kunci IS (kunci kongsi niat), iaitu kunci dikongsi ditambahkan pada semua baris yang layak Sesi lain boleh membaca rekod dan terus menambah kunci IS, tetapi ia tidak boleh diubah suai sehingga sesi terkunci selesai . (Jika tidak, masa tunggu kunci langsung tamat).
SELECT ... FOR UPDATE
Apa yang ditambahkan ialah kunci IX (kunci eksklusif niat), iaitu, eksklusif ditambahkan pada baris yang memenuhi syarat Sesi lain tidak boleh menambah sebarang kunci S atau kunci X pada rekod ini. Jika tiada bacaan tanpa kunci yang konsisten, sesi lain tidak boleh membaca dan mengubah suai rekod ini, tetapi innodb mempunyai bacaan tidak mengunci (bacaan syot kilat tidak memerlukan penguncian).
Oleh itu, kaedah penguncian for update
hanya menyekat kaedah pertanyaan lock in share mode
lebih daripada kaedah select...lock in share mode
dan tidak menyekat bacaan syot kilat.
Senario Aplikasi
LOCK IN SHARE MODE
terpakai pada senario penulisan dua jadual dengan hubungan Mengambil contoh rasmi MySQL, satu jadual ialah jadual anak, dan yang satu lagi ialah jadual anak. Ia adalah jadual induk. Andaikan lajur tertentu child_id jadual anak dipetakan ke lajur c_child_id jadual induk, adalah berisiko untuk memasukkan rekod child_id =100 ke dalam jadual anak pada masa ini, kerana jadual induk mungkin dilaksanakan pada masa yang sama dengan sisipan Untuk memadamkan rekod dengan c_child_id=100, terdapat risiko ketidakkonsistenan data perniagaan. Kaedah yang betul ialah melaksanakan select * from parent where c_child_id=100 lock in share mode
dahulu, kunci rekod ini dalam jadual induk, dan kemudian laksanakan insert into child(child_id) values (100)
.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci apakah petunjuk mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Prosedur yang disimpan adalah penyataan SQL yang dipraktikkan dalam MySQL untuk meningkatkan prestasi dan memudahkan operasi kompleks. 1. Meningkatkan prestasi: Selepas penyusunan pertama, panggilan seterusnya tidak perlu dikompilasi. 2. Meningkatkan Keselamatan: Mengatasi akses jadual data melalui kawalan kebenaran. 3. Memudahkan operasi kompleks: Campurkan beberapa pernyataan SQL untuk memudahkan logik lapisan aplikasi.

Prinsip kerja cache pertanyaan MySQL adalah untuk menyimpan hasil pertanyaan pilih, dan apabila pertanyaan yang sama dilaksanakan sekali lagi, hasil cache dikembalikan secara langsung. 1) Cache pertanyaan meningkatkan prestasi bacaan pangkalan data dan mendapati hasil cache melalui nilai hash. 2) Konfigurasi mudah, set query_cache_type dan query_cache_size dalam fail konfigurasi MySQL. 3) Gunakan kata kunci sql_no_cache untuk melumpuhkan cache pertanyaan khusus. 4) Dalam persekitaran kemas kini frekuensi tinggi, cache pertanyaan boleh menyebabkan kesesakan prestasi dan perlu dioptimumkan untuk digunakan melalui pemantauan dan pelarasan parameter.

Sebab mengapa MySQL digunakan secara meluas dalam pelbagai projek termasuk: 1. Prestasi tinggi dan skalabilitas, menyokong pelbagai enjin penyimpanan; 2. Mudah untuk digunakan dan mengekalkan, konfigurasi mudah dan alat yang kaya; 3. Ekosistem yang kaya, menarik sejumlah besar sokongan alat komuniti dan pihak ketiga; 4. Sokongan silang platform, sesuai untuk pelbagai sistem operasi.

Langkah -langkah untuk menaik taraf pangkalan data MySQL termasuk: 1. Sandarkan pangkalan data, 2. Hentikan perkhidmatan MySQL semasa, 3. Pasang versi baru MySQL, 4. Mulakan versi baru MySQL Service, 5 pulih pangkalan data. Isu keserasian diperlukan semasa proses peningkatan, dan alat lanjutan seperti Perconatoolkit boleh digunakan untuk ujian dan pengoptimuman.

Dasar sandaran MySQL termasuk sandaran logik, sandaran fizikal, sandaran tambahan, sandaran berasaskan replikasi, dan sandaran awan. 1. Backup Logical menggunakan MySqldump untuk mengeksport struktur dan data pangkalan data, yang sesuai untuk pangkalan data kecil dan migrasi versi. 2. Sandaran fizikal adalah cepat dan komprehensif dengan menyalin fail data, tetapi memerlukan konsistensi pangkalan data. 3. Backup tambahan menggunakan pembalakan binari untuk merekodkan perubahan, yang sesuai untuk pangkalan data yang besar. 4. Sandaran berasaskan replikasi mengurangkan kesan ke atas sistem pengeluaran dengan menyokong dari pelayan. 5. Backup awan seperti Amazonrds menyediakan penyelesaian automasi, tetapi kos dan kawalan perlu dipertimbangkan. Apabila memilih dasar, saiz pangkalan data, toleransi downtime, masa pemulihan, dan matlamat titik pemulihan perlu dipertimbangkan.

Mysqlclusteringenhancesdatabaserobustnessandsandscalabilitybydistributingdataacrossmultiplenodes.itusesthendbenginefordatareplicationandfaulttolerance, ugeinghighavailability.setupinvolvesconfiguringmanagement, Data, dansqlnodes

Mengoptimumkan reka bentuk skema pangkalan data di MySQL dapat meningkatkan prestasi melalui langkah -langkah berikut: 1. Pengoptimuman indeks: Buat indeks pada lajur pertanyaan biasa, mengimbangi overhead pertanyaan dan memasukkan kemas kini. 2. Pengoptimuman Struktur Jadual: Mengurangkan kelebihan data melalui normalisasi atau anti-normalisasi dan meningkatkan kecekapan akses. 3. Pemilihan Jenis Data: Gunakan jenis data yang sesuai, seperti INT dan bukannya VARCHAR, untuk mengurangkan ruang penyimpanan. 4. Pembahagian dan Sub-meja: Untuk jumlah data yang besar, gunakan pembahagian dan sub-meja untuk menyebarkan data untuk meningkatkan kecekapan pertanyaan dan penyelenggaraan.

TooptimizeMySQLperformance,followthesesteps:1)Implementproperindexingtospeedupqueries,2)UseEXPLAINtoanalyzeandoptimizequeryperformance,3)Adjustserverconfigurationsettingslikeinnodb_buffer_pool_sizeandmax_connections,4)Usepartitioningforlargetablestoi


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual
