sql >> Databasteknik >  >> RDS >> Mysql

Bör PHP-utvecklare använda MySQL:s lagrade procedurer?

Huruvida man ska använda lagrade procedurer eller inte är mer en religiös eller politisk diskussion på en bar än inte.
Det som måste göras är att tydligt definiera dina applikationsskikt och inte gå över dessa gränser. Lagrade procedurer har flera fördelar och nackdelar jämfört med att göra frågor utanför databasen.

Fördel 1:Lagrade procedurer är modulära. Detta är bra ur underhållssynpunkt. När frågeproblem uppstår i din applikation, håller du förmodligen med om att det är mycket lättare att felsöka en lagrad procedur än en inbäddad fråga begravd inom många rader med GUI-kod.

Fördel 2:Lagrade procedurer är inställbara. Genom att ha procedurer som hanterar databasarbetet för ditt gränssnitt, eliminerar du behovet av att ändra GUI-källkoden för att förbättra en frågas prestanda. Ändringar kan göras i de lagrade procedurerna--i termer av join-metoder, olika tabeller, etc.--som är transparenta för front-end-gränssnittet.

Fördel 3:Lagrade procedurer sammanfattar eller separerar funktioner på serversidan från klientsidan. Det är mycket lättare att koda en GUI-applikation för att anropa en procedur än att bygga en fråga genom GUI-koden.

Fördel 4:Lagrade procedurer skrivs vanligtvis av databasutvecklare/administratörer. Personer som innehar dessa roller är vanligtvis mer erfarna i att skriva effektiva frågor och SQL-satser. Detta frigör GUI-applikationsutvecklarna att använda sina färdigheter på applikationens funktionella och grafiska presentationsdelar. Om du låter dina medarbetare utföra de uppgifter som de är bäst lämpade för, kommer du i slutändan att producera en bättre övergripande applikation.

Med allt detta i åtanke finns det flera nackdelar.

Nackdel 1:Applikationer som involverar omfattande affärslogik och bearbetning skulle kunna belasta servern för mycket om logiken implementerades helt i lagrade procedurer. Exempel på denna typ av bearbetning inkluderar dataöverföringar, datatransfereringar, datatransformationer och intensiva beräkningsoperationer. Du bör flytta denna typ av bearbetning till komponenter för affärsprocesser eller dataåtkomstlogik, som är en mer skalbar resurs än din databasserver.

Nackdel 2:Lägg inte all din affärslogik i lagrade procedurer. Underhåll och smidigheten i din applikation blir ett problem när du måste ändra affärslogik på Sp-språket. Till exempel bör ISV-applikationer som stöder flera RDBMS inte behöva upprätthålla separata lagrade procedurer för varje system.

Nackdel 3:Att skriva och underhålla lagrade procedurer är oftast en specialiserad kompetens som inte alla utvecklare besitter. Denna situation kan införa flaskhalsar i projektutvecklingsschemat.

Jag har nog missat några fördelar och nackdelar, kommentera gärna.



  1. Förlorade anslutningen till MySQL-servern vid "läsning av initialt kommunikationspaket", systemfel:0

  2. Varning:mysql_num_rows() förväntar sig att parameter 1 är resurs, boolean ges i /home/folder/public_html/folder/folder/login.php på rad 18

  3. Vad är det bästa sättet att lagra checkbox-värden i MySQL-databasen?

  4. nodejs mysql Fel:Anslutning förlorad Servern stängde anslutningen