Membangun dan menggunakan prosedur tersimpan di MySQL
Jul 06, 2025 am 02:03 AMProsedur yang disimpan adalah alat yang berkuasa di MySQL yang meningkatkan prestasi, memudahkan kod aplikasi, dan meningkatkan keselamatan dengan merangkumi logik kompleks di dalam pangkalan data. Untuk membangun dan menggunakan prosedur tersimpan secara berkesan, anda perlu memahami definisi dan senario yang berkenaan, dan mengikuti amalan pengekodan yang baik: 1. Buat dengan membuat prosedur dan hubungi mereka melalui panggilan; 2. Gunakan parameter dalam, keluar dan inout dengan munasabah; 3. Pastikan pembacaan kod, termasuk format yang konsisten, menambah komen dan memisahkan logik kompleks; 4. Tambah mekanisme pengendalian ralat untuk meningkatkan keteguhan; 5. Digunakan dalam operasi batch, pertanyaan kompleks dan senario lain, tetapi elakkan menggunakannya apabila anda tidak biasa dengan SQL atau bergantung pada ORM.
Prosedur yang disimpan di MySQL adalah alat yang berkuasa yang membolehkan pemaju merangkumi logik kompleks secara langsung dalam pangkalan data. Mereka boleh meningkatkan prestasi, memudahkan kod aplikasi, dan meningkatkan keselamatan dengan mengurangkan akses langsung ke jadual. Inilah cara untuk membangun dan menggunakannya dengan berkesan.

Apakah prosedur yang disimpan?
Prosedur yang disimpan adalah satu set pernyataan SQL yang disimpan di bawah nama dan disusun ke dalam pangkalan data. Anda boleh memanggilnya seperti fungsi dari aplikasi anda atau arahan SQL yang lain.

Mereka sangat berguna apabila anda perlu:
- Jalankan tugas berulang
- Mengurangkan trafik rangkaian antara aplikasi dan db
- Menguatkuasakan peraturan perniagaan di lapisan data
Fikirkan mereka sebagai program mini yang tinggal di dalam pangkalan data anda.

Cara membuat prosedur yang disimpan sederhana
Membuat satu bermula dengan pernyataan CREATE PROCEDURE
. Katakan anda ingin mendapatkan semua pengguna dari bandar tertentu:
Pemendek // Buat Prosedur GetUsersFromCity (di City_name Varchar (255)) Mulakan Pilih * dari pengguna di mana bandar = city_name; Akhir // Pembatas;
Perkara penting yang perlu diperhatikan:
- Perubahan
DELIMITER
membolehkan anda menggunakan titik -titik besar di dalam prosedur. -
IN
mentakrifkan parameter input - terdapat jugaOUT
danINOUT
untuk kes penggunaan yang berbeza. - Gunakan nama dan komen yang bermakna untuk kejelasan kemudian.
Untuk menjalankannya:
Panggil GetUsersFromCity ('New York');
Petua untuk menulis prosedur yang boleh dipelihara
Walaupun mereka tinggal di pangkalan data, prosedur yang disimpan harus mengikuti amalan pengekodan yang baik:
- Gunakan pemformatan yang konsisten - Indent SQL anda dan line up kata kunci supaya lebih mudah dibaca.
- Tambah komen - terutamanya jika logik mendapat kompleks. Terangkan mengapa sesuatu telah dilakukan, bukan hanya apa.
- Memecahkan logik besar - jika prosedur tumbuh terlalu besar, memecahnya menjadi yang lebih kecil. Ia menjadikan debugging lebih mudah.
- Perkara pengendalian ralat - Gunakan
DECLARE CONTINUE HANDLER FOR NOT FOUND
atauSIGNAL
untuk menguruskan pengecualian dengan anggun.
Sebagai contoh, jika anda mengemas kini rekod dan baris tidak wujud, mengendalikan kes itu dan bukannya membiarkannya gagal.
Bilakah hendak menggunakan (dan tidak menggunakan) prosedur yang disimpan
Mereka bersinar dalam senario seperti:
- Operasi batch (misalnya, pembersihan malam)
- Kompleks bergabung dan transformasi yang tidak tergolong dalam kod aplikasi
- Memusatkan logik merentasi pelbagai aplikasi yang memukul DB yang sama
Tetapi elakkan mereka bila:
- Pasukan anda tidak selesa dengan SQL
- Anda menggunakan Orms dengan berat dan ingin menyimpan logik dalam kod aplikasi
- Anda bekerja di persekitaran microservices di mana setiap perkhidmatan memiliki DB
Ini keseimbangan - kadang -kadang meletakkan logik dalam DB masuk akal, kadang -kadang tidak.
Itulah teras membangun dan menggunakan prosedur tersimpan di MySQL. Mereka tidak selalu diperlukan, tetapi apabila digunakan dengan betul, mereka dapat menyelaraskan interaksi pangkalan data anda dan mengurangkan overhead. Ingatlah untuk memastikan mereka teratur dan didokumenkan.
Atas ialah kandungan terperinci Membangun dan menggunakan prosedur tersimpan di MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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 Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

MySQLDUMP adalah alat yang biasa untuk melakukan sandaran logik pangkalan data MySQL. Ia menjana fail SQL yang mengandungi penyataan CREATE dan INSERT untuk membina semula pangkalan data. 1. Ia tidak menyandarkan fail asal, tetapi menukarkan struktur dan kandungan pangkalan data ke dalam arahan SQL mudah alih; 2. Ia sesuai untuk pangkalan data kecil atau pemulihan selektif, dan tidak sesuai untuk pemulihan data tahap TB yang cepat; 3. Pilihan biasa termasuk--single-transaksi,-databases,-semua data,-routin, dan sebagainya; 4. Gunakan perintah MySQL untuk mengimport semasa pemulihan, dan boleh mematikan cek utama asing untuk meningkatkan kelajuan; 5. Adalah disyorkan untuk menguji sandaran secara teratur, menggunakan mampatan, dan pelarasan automatik.

Hidupkan log pertanyaan perlahan MySQL dan menganalisis isu prestasi lokasi. 1. Edit fail konfigurasi atau ditetapkan secara dinamik SLOW_QUERY_LOG dan LONG_QUERY_TIME; 2. Log mengandungi medan utama seperti query_time, lock_time, rows_examined untuk membantu menilai kesesakan kecekapan; 3. Gunakan alat mysqldumpslow atau pt-query-digest untuk menganalisis log dengan cekap; 4. Cadangan pengoptimuman termasuk menambah indeks, mengelakkan pilih*, memisahkan pertanyaan kompleks, dan lain -lain. Sebagai contoh, menambah indeks ke user_id dapat mengurangkan jumlah baris yang diimbas dan meningkatkan kecekapan pertanyaan.

Apabila mengendalikan nilai null dalam MySQL, sila ambil perhatian: 1. Apabila mereka bentuk jadual, medan utama ditetapkan kepada notnull, dan bidang pilihan dibenarkan NULL; 2. Isnull atau Isnotnull mesti digunakan dengan = atau! =; 3. Fungsi Ifnull atau Coalesce boleh digunakan untuk menggantikan nilai lalai paparan; 4. Berhati -hati apabila menggunakan nilai null secara langsung apabila memasukkan atau mengemas kini, dan perhatikan sumber data dan kaedah pemprosesan rangka kerja ORM. Null mewakili nilai yang tidak diketahui dan tidak sama dengan nilai, termasuk dirinya sendiri. Oleh itu, berhati -hati apabila menanyakan, menghitung, dan menghubungkan jadual untuk mengelakkan data yang hilang atau kesilapan logik. Penggunaan fungsi dan kekangan yang rasional dapat mengurangkan gangguan yang disebabkan oleh null.

Transaksi MySQL dan mekanisme kunci adalah kunci kepada kawalan serentak dan penalaan prestasi. 1. Apabila menggunakan urus niaga, pastikan anda menghidupkan dan mengekalkan urus niaga untuk mengelakkan pekerjaan sumber dan kembung undo dari transaksi yang panjang; 2. Mengunci operasi termasuk kunci yang dikongsi dan kunci eksklusif, pilih ... forupdate plus x locks, pilih ... lockinsharemode plus s, tulis operasi secara automatik kunci, dan indeks harus digunakan untuk mengurangkan granularity kunci; 3. Tahap pengasingan dapat dibaca secara lalai, sesuai untuk kebanyakan senario, dan pengubahsuaian harus berhati -hati; 4. Pemeriksaan Deadlock boleh menganalisis butiran kebuntuan terkini melalui perintah showengineinnodbstatus, dan kaedah pengoptimuman termasuk perintah pelaksanaan bersatu, meningkatkan indeks, dan memperkenalkan sistem giliran.

GroupBy digunakan untuk mengumpulkan data mengikut bidang dan melakukan operasi agregasi, dan mempunyai digunakan untuk menapis hasil selepas pengelompokan. Sebagai contoh, menggunakan GroupByCustomer_ID boleh mengira jumlah jumlah penggunaan setiap pelanggan; Menggunakan mempunyai dapat menyaring pelanggan dengan jumlah penggunaan lebih dari 1,000. Bidang yang tidak diagihkan selepas PILIH mesti muncul di GroupBy, dan mempunyai boleh ditapis secara kondusif menggunakan alias atau ungkapan asal. Teknik biasa termasuk mengira bilangan setiap kumpulan, mengumpulkan pelbagai bidang, dan penapisan dengan pelbagai syarat.

Paging MySQL biasanya dilaksanakan menggunakan had dan mengimbangi, tetapi prestasinya kurang baik di bawah jumlah data yang besar. 1. Had mengawal bilangan setiap halaman, mengimbangi mengawal kedudukan permulaan, dan sintaks adalah LimitnOffsetm; 2. Masalah prestasi disebabkan oleh rekod yang berlebihan dan membuang imbasan mengimbangi, mengakibatkan kecekapan yang rendah; 3. Cadangan pengoptimuman termasuk menggunakan paging kursor, pecutan indeks, dan pemuatan malas; 4. Paging kursor menempatkan titik permulaan halaman seterusnya melalui nilai unik rekod terakhir halaman sebelumnya, mengelakkan offset, yang sesuai untuk operasi "halaman seterusnya", dan tidak sesuai untuk melompat rawak.

Untuk menubuhkan replikasi master-hamba asynchronous untuk MySQL, ikuti langkah-langkah berikut: 1. Sediakan pelayan induk, aktifkan log binari dan tetapkan pelayan-id yang unik, buat pengguna replikasi dan rekod lokasi log semasa; 2. Gunakan mysqldump untuk menyokong data perpustakaan induk dan mengimportnya ke pelayan hamba; 3. Konfigurasikan pelayan-id dan log relay pelayan hamba, gunakan perintah Changemaster untuk menyambung ke perpustakaan induk dan mulakan benang replikasi; 4. Periksa masalah biasa, seperti rangkaian, keizinan, konsistensi data dan konflik kendiri, dan memantau kelewatan replikasi. Ikuti langkah -langkah di atas untuk memastikan bahawa konfigurasi selesai dengan betul.

Untuk melihat saiz pangkalan data dan jadual MySQL, anda boleh menanyakan maklumat_schema secara langsung atau gunakan alat baris arahan. 1. Semak keseluruhan saiz pangkalan data: Laksanakan pernyataan SQL selecttable_schemaas'database ', jumlah (data_length index_length)/1024/1024as'size (mb)' dari formation_schema.tablesgroupbytable_schema; Anda boleh mendapatkan saiz keseluruhan semua pangkalan data, atau menambah di mana syarat untuk mengehadkan pangkalan data tertentu; 2. Periksa saiz jadual tunggal: gunakan selectta
