Inte i sig, men om du har stora BLOB-block som täpper till dina tabeller och minnescache kommer det säkerligen att resultera i en prestandaträff.
Ja, detta är ett vanligt tillvägagångssätt. Du skulle vanligtvis göra något som att ha mappar namngivna efter varje tabell de är associerade med, innehållande filnamn baserade enbart på primärnyckeln (helst ett heltal, absolut aldrig något som användaren skickat in).
Är detta en bättre idé? Det beror på. Det finns fördelar med implementeringsenkelhet med att bara ha ett enda datalager och att inte behöva oroa sig för att ge webbanvändaren skrivåtkomst till någonting. Om det kan finnas flera kopior av appen som körs (t.ex. aktiv-aktiv lastbalansering) måste du också synkronisera lagringen, vilket är mycket enklare med en databas än med ett filsystem.
Om du använder filsystemet snarare än en blob, är frågan då, får du webbservern att betjäna det genom att peka ett alias på mappen?
- + är supersnabb
- + cachar bra
- - extra serverkonfiguration:virtuell katalog; behöver lämplig filtillägg för att returnera önskad
Content-Type
- - extra serverkonfiguration:måste lägga till
Content-Disposition: attachment
/X-Content-Type-Options
rubriker för att stoppa IE-snuffa efter HTML som en del av anti-XSS-åtgärder
eller serverar du filen manuellt genom att ett skript på serversidan spottar ut den, eftersom du skulle behöva servera från en MySQL-blob?
- - är potentiellt långsam
- - behöver en hel del manuell If-Modified-Since och ETag-hantering för att cache ordentligt
- + kan använda programmets egna åtkomstkontrollmetoder
- + lätt att lägga till korrekt innehållstyp och innehållsfördelning från visningsskriptet
Detta är en avvägning som det inte finns ett globalt accepterat svar på.