Ik wil een hoop blogs kunnen aanbieden op mijn site.

Ik heb een html pagina per site.
Als ik alle teksten nu in een blob field in een mysql database aanmaak dan vermoed ik wel dat dit langzamer is.
Als er straks honderden blogs zijn, denk ik dat de database het zwaar gaat krijgen.

Is het verstandig om steds een html bestand aan te maken voor een nieuwe blog als het om snelheid gaat?

groet

Daniel
- Ariƫn - op 15/05/2017 19:46:46
Dat lijkt mij dan meer aan de collatie te liggen dan aan de datatype.

Een collation bepaalt hoe tekst wordt geselecteerd en gerangschikt. Ik denk niet dat dit de boosdoener is, ik zou eerder verwachten dat het in de hoek van de character encoding zit. Om dit echter na te gaan zul je meer data moeten verschaffen over:
- hoe het HTML-document waarin je de code weergeeft in elkaar zit (meta-tags of een header() die aangeeft welke character encoding je gebruikt?)
- hoe je een connectie maakt met je database en/of je een character encoding selecteert met een set_charset() methode
- hoe de tabel- en kolomdefinities van de tabellen luiden (ondersteunen deze voldoende lange UTF-8 karakters om deze emoticons op te slaan?)

Idealiter is al het bovenstaande UTF-8. In MySQL heb je echter meerdere utf8-smaken.

Ben je ook nagegaan of er op byte-niveau iets verandert als je data uit je database uitleest? Dat zou dan een indicatie zijn van mogelijke ongewenste vertalingen of data die corrupt is geraakt tijdens wegschrijven/updaten.
de meta tags zijn utf-8,
ook de mysql in UTF-8 voordat ik de insert query uitvoer.

Ik gebruik MariaDB 10.1
"UTF-8" bestaat niet in MySQL. Je zult een utf8* variant moeten kiezen die voldoende lange byte-sequences kan opslaan voor de karakters/emoticons die je wilt opslaan.
utf8mb4 is de variant voor de mysql collatie.

De charset is urf, want dit doe ik voordat ik hem invoer in de BLOB field:

mysqli_set_charset($DBD->conn(),"utf8");

Maar lees ook aub de gehele post, want daar staat dit ook al genoemd.
Als utf8mb4 de character encoding is, dan moet je dat ook instellen, anders spreek je twee verschillende dialecten van UTF-8.

En nogmaals, collation is niet hetzelfde als character encoding...

EDIT: dit is je probleem. set_charset() zegt zoveel als "geef mij data terug in deze character encoding". Omdat de tabellen utf8mb4 zijn (en de data hopelijk ook) wordt alles terugvertaald naar utf8 (single byte UTF-8). Alle karakters die hiervan afwijken (meer dan 1 byte innemen) worden vertaald naar een vraagteken (?) of worden gestript.

Reageren