𝗟𝗮𝗿𝗮𝘃𝗲𝗹 𝗣𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲-ஐ மேம்படுத்துதல்
உங்களுக்கு வேகமான இணையச் செயலிகள் (web applications) தேவை. மெதுவான செயலிகள் பயனர்களைச் சோர்வடையச் செய்யும் மற்றும் உங்கள் வணிகத்தைப் பாதிக்கும். "N+1 query problem" உங்கள் Laravel செயலிகளின் வேகத்தைக் குறைக்கலாம். ஆனால் Laravel இதற்கான தீர்வை வழங்குகிறது: eager loading.
இந்த நுட்பம் with() முறையை (method) நீங்கள் சிறப்பாகப் பயன்படுத்த உதவும். உங்கள் செயலிகளை எவ்வாறு வேகமாகவும் திறமையாகவும் வைத்திருப்பது என்பதை நீங்கள் கற்றுக்கொள்வீர்கள்.
ஒரு உதாரணத்தைப் பார்ப்போம். உங்களிடம் ஒரு வலைப்பதிவுத் தளம் (blogging platform) உள்ளது. ஒவ்வொரு பதிவும் (post) ஒரு ஆசிரியருக்குச் சொந்தமானது. ஒவ்வொரு பதிவின் ஆசிரியருடன் சேர்த்து பதிவுகளின் பட்டியலையும் காட்ட விரும்புகிறீர்கள்.
அனைத்துப் பதிவுகளையும் எடுத்த பிறகு, ஒவ்வொரு பதிவின் ஆசிரியரையும் எடுப்பது ஒரு பொதுவான அணுகுமுறையாகும். இது பல தரவுத்தள வினவல்களை (database queries) ஏற்படுத்தும்.
உங்களிடம் 100 பதிவுகள் இருந்தால், இந்த நிரல் (code) 101 தரவுத்தள வினவல்களைச் செய்யும். இதுதான் "N+1 query problem". இது கூடுதல் சுமையையும் (overhead) உங்கள் செயலியின் வேகக் குறைவையும் ஏற்படுத்துகிறது.
with() முறை இந்தத் சிக்கலைத் தீர்க்கிறது. இது தொடர்புடைய அனைத்து மாதிரிகளையும் (models) ஒன்று அல்லது இரண்டு வினவல்களில் எடுத்துவிடும்.
இதை நீங்கள் இவ்வாறு பயன்படுத்தலாம்:
$posts = App\Models\Post::with('author')->get();
இந்த நிரல் அனைத்துப் பதிவுகளையும் அவற்றின் ஆசிரியர்களையும் இரண்டு வினவல்களில் எடுத்துவிடும்.
நீங்கள் பல உறவுகளையும் (relationships) ஏற்றலாம்:
$posts = App\Models\Post::with(['author', 'category'])->get();
அல்லது உறவுகளுக்குள்ளான உறவுகளை (relationships of relationships) ஏற்றலாம்:
$posts = App\Models\Post::with('author.profile')->get();
வேகமான Laravel செயலிகளை உருவாக்குவதற்கு eager loading மிக முக்கியமானது. இது N+1 query சிக்கலை நீக்குகிறது மற்றும் தரவுத்தள வினவல்களின் எண்ணிக்கையைக் குறைக்கிறது.
உங்கள் செயலியின் செயல்திறனை மேம்படுத்த with() முறையைப் பயன்படுத்தவும்.
Source: https://dev.to/prabashanadev/mastering-laravel-performance-a-deep-dive-into-eager-loading-22l0