sql >> Databasteknik >  >> RDS >> Mysql

Ska jag använda MySQL blob-fälttyp?

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å.



  1. MySQL-prestanda:Konvertera MySQL till MariaDB

  2. Hur extraherar man ett numeriskt värde från en sträng i en MySQL-fråga?

  3. Kan inte lösa sorteringskonflikten mellan SQL_Latin1_General_CP1_CI_AS och Latin1_General_CI_AS i lika med operationen

  4. hur gör man en funktion för att returnera radtyp från en tabell i pl/sql?