Jag hävdar att bilder (filer) vanligtvis INTE lagras i en databas base64-kodad. Istället lagras de i sin råa binära form i en binär (blob) kolumn eller fil.
Base64 används endast som transportmekanism, inte för lagring. Du kan till exempel bädda in en base64-kodad bild i ett XML-dokument eller ett e-postmeddelande.
Base64 är också strömvänlig. Du kan koda och avkoda i farten (utan att veta den totala storleken på datan).
Även om base64 är bra för transport, lagra inte dina bilder base64-kodade .
Base64 tillhandahåller ingen kontrollsumma eller något av något värde för lagring.
Base64-kodning ökar lagringskravet med 33 % jämfört med ett rått binärt format. Det ökar också mängden data som måste läsas från beständig lagring, vilket fortfarande generellt sett är den största flaskhalsen inom datoranvändning. Det är i allmänhet snabbare att läsa färre byte och koda dem i farten. Bara om ditt system är CPU-bundet istället för IO-bundet, och du regelbundet matar ut bilden i base64, överväg att lagra i base64.
Inline-bilder (base64-kodade bilder inbäddade i HTML) är själva en flaskhals - du skickar 33 % mer data över tråden och gör det i serie (webbläsaren måste vänta på de inbäddade bilderna innan den kan slutföra nedladdningen av sidan HTML).
Om du fortfarande vill lagra bilder base64-kodade, snälla, vad du än gör, se till att du inte lagrar base64-kodad data i en UTF8-kolumn och indexera den sedan.