Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP, MySql] Dove iniziare uno studio come si deve per il caching

    Una delle mie mancanze più grandi è il sistema di caching: non mi sono mai informato seriamente, sono fermo alle basi, e volevo chiedervi delle dritte su quali codici o classi (native o no del php) dovrei iniziare lo studio.

    Nei miei siti uso mysql e php orientato agli oggetti. Poniamo il fatto che le mie query facciano il loro dovere, potete indicarmi come ottimizzare la cache in questi due casi?

    1) Sito di e-commerce con migliaia di prodotti su un server dedicato
    2) Sito di e-commerce con migliaia di prodotti su un server condiviso (immagino che la risposta sia "passa a un dedicato", ma non sempre il cliente ci dà l'autorizzazione)
    3) Sito non e-commerce, ma con migliaia di record. Per fare un esempio, diciamo una wikipedia in miniatura

    Avevo guardato la classe memcached del PHP, ma non so se vada bene. Ho letto che sarebbe utile più che altro per piattaforme che usano vari server, e non uno solo...
    Con il MySql sono un po' meno esperto e non so se anche lì c'è un sistema per migliorare le prestazioni, magari installando moduli specifici sul server

  2. #2
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Per PHP non so nulla (lo sto studiano da un paio di mesi).
    Per MySQL invece posso dirti quello che dice il nosto sistemista: innanzitutto esamina con cura lo slow query log.
    Anzi meglio ancora togli MySQL e metti MariaDB, così puoi loggare tutte le query.
    Fatto quello ottimizza le query (con relativi indici, riscritture etc).
    A quel punto se le prestazioni son basse comunque, esamina il perchè.
    Ci sono troppe scritture contemporanee? Ci sono troppi client in lettura?
    Stabiliti "cosa" non va bene... prendi un server dedicato con tanta RAM, una CPU veloce (mysql preferisce CPU veloce piuttosto che molte CPU) e soprattutto dischi SSD.
    Aumenta poi la dimensione della cache interna di mysql fino a portarla a una % degna della RAM del computer

  3. #3
    Grazie per le dritte, in questi giorni mi informo sul materiale che mi hai scritto e vedo di approfondire

    Per il PHP, invece, qualcuno ha dei suggerimenti?

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    La tua è una domanda molto generica. Parti da "Che cos'è la cache?", cerca qualche articolo sul web, e inizia da lì. Generalmente un'applicazione ha tanti livelli/strati di cache. C'è il caching con http, che ti permette di alleggerire il carico sulla rete e di migliorare le prestazioni. La tua pagina web può essere messa in cache interamente, in modo che se l'utente la richiede una seconda volta non andrà più a richiedere il contenuto alla tua applicazione. Oppure, se la pagina è molto dinamica, può usare ESI per mettere in cache solo alcuni frammenti. Può utilizzare un reverse proxy come Varnish Cache per ridurre il carico del server (vedi https://en.wikipedia.org/wiki/Web_accelerator) e utilizza un CDN per il caching delle risorse statiche come immagini, fogli di stile, js, etc. Già qui abbiamo parlato di due differenti tipi di cache: quella del browser e quella del proxy.
    Frequentemente l'utilizzo di un RDBMS è IL collo di bottiglia per eccellenza, e solitamente aiuta usare soluzioni come quelle fornite da redis/memcache per salvare i risultati delle query (e non solo), in modo da non andare a colpire il database ogni volta che ti serve leggere certi dati. Ma anche il db ha la sua cache, ad esempio per mysql-InnoDB: https://dev.mysql.com/doc/refman/5.5...ffer-pool.html
    In PHP puoi sentire parlare di "APC bytecode cache", che non è altro che l'opcode messo in memoria, con cui puoi evitare compilazioni ridondanti dei tuoi script (ormai è una funzione attiva di default).

    Insomma, non esiste il bottone magico su cui c'è scritto "Cache: ON!", o una voce nella configurazione di php "Ottimizza_la_mia_applicazione: true", o una libreria che si chiama "Risorse_illimitate 2.0" che puoi installare sul server, e con il quale puoi fare in modo che la tua applicazione, che prima reggeva i suoi 100 visitatori giornalieri, riesca a reggerne 1 milione dall'oggi al domani, o che riesca a gestire un enorme quantitativo di dati.

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ti hanno consigliato di mandare al diavolo MySQL e usare MariaDB è un'idea sbagliata e buona allo stesso tempo, perché MySQL è sicuramente il diavolo, lento e faraonico, se vuoi fare un salto di velocità passa ad un database più potente come PostGreSQL se non puoi permetterti Oracle, il primo è gratis ed è molto performante, se dal PHP usi classi di astrazione non ti sarà difficile passare da uno all'altro, e se usi PDO è ancora più facile.
    MariaDB va bene ma è un fork realizzato per continuare a usare il motore MyIsam e francamente su progetti importanti non userei programmi che non siano a livello enterprise o me la rischio di brutto.
    Se su un server di ecommerce si perdono dati rischi una causa in tribunale, meglio andare su cose testate lungamente, se MySQL no va bene passa a qualcosa di egualmente testato.

  6. #6
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    Ti hanno consigliato di mandare al diavolo MySQL e usare MariaDB è un'idea sbagliata e buona allo stesso tempo, perché MySQL è sicuramente il diavolo, lento e faraonico, se vuoi fare un salto di velocità passa ad un database più potente come PostGreSQL se non puoi permetterti Oracle, il primo è gratis ed è molto performante, se dal PHP usi classi di astrazione non ti sarà difficile passare da uno all'altro, e se usi PDO è ancora più facile.
    MariaDB va bene ma è un fork realizzato per continuare a usare il motore MyIsam e francamente su progetti importanti non userei programmi che non siano a livello enterprise o me la rischio di brutto.
    Se su un server di ecommerce si perdono dati rischi una causa in tribunale, meglio andare su cose testate lungamente, se MySQL no va bene passa a qualcosa di egualmente testato.
    Mi permetto di dire...
    1) postgres è buono, ma 100 volte meno diffuso di mysql
    2) mariadb non usa minimamente myisam. anzi è stato sostituito integralmente da aria, per chi proprio vuole usare le ricerche full text. Il suo motore predefinito (e consigliato) è innodb patchato con un sacco di miglioramenti proposti da Google in giù (vedi l'ultima versione con crittazione), con backport di correzioni e novità introdotte in mysql
    3) mariadb viene usato in ambito enterprise sempre più al posto di mysql, tanto che in parecchie distribuzioni Linux mysql è sparito proprio a favore di mariadb
    Tanto per citare un sitarello ... Wikipedia da 2 anni usa mariadb
    http://blog.wikimedia.org/2013/04/22...dopts-mariadb/
    4) mysql da quando è stato acquistato da oracle è pieno di bug di ogni genere (basta che segui il relativo sito)

    Qui l'apologesi
    https://seravo.fi/2015/10-reasons-to...ll-using-mysql

    In 2013 there was news about Wikipedia migrating it’s enormous wiki system from MySQL to MariaDB and about Google using MariaDB in their internal systems instead of MySQL. One of the MariaDB Foundation sponsors is Automattic, the company behind WordPress.com. Other notable examples are booking.com and Craigslist. Fedora and OpenSUSE have had MariaDB as the default SQL database option for years. With the releases of Red Hat Enterprise Linux 7 and SUSE Enterprise Linux 12 both these vendors ship MariaDB instead of MySQL and promises to support their MariaDB versions for the lifetime of the major distribution releases, that is up to 13 years. The last big distribution to get MariaDB was Debian (and based on it, Ubuntu). The “intent to package” bug in Debian was already filed in 2010 but it wasn’t until December 2013 that the bug finally got closed. This was thanks to Seravo staff who took care of packaging MariaDB
    5.5 for Debian, from where it also got into Ubuntu 14.04. Later we have
    also packaged MariaDB 10.0, which will be included in the next Debian
    and Ubuntu releases in the first half of 2015.
    Sembrerebbe (uso il condizionale) che stia per soppiantare del tutto MySQL in ambito Linux (una volta che "entri" in debian, suse e Redhat praticamente hai coperto tutta la fascia "professionale")
    Ultima modifica di brancomat; 26-10-2015 a 11:29

  7. #7
    Ottimo, mi avete dato un bel po' di spunti da cui partire...
    Parto dai link di Kurt, ho visto che mi danno una buona infarinatura generale, e poi scendo nei dettagli.
    Per i database ho sempre usato MySql, anche se conosco gli altri per sentito dire. Ero convinto che fosse il migliore in circolazione, ma adesso mi avete riempito di dubbi

    Appena arrivo a ottimizzare decentemente le pagine web, direi che devo farmi una panoramica fatta bene sui db.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.