Domanda

Nell'azienda per cui lavoro stiamo discutendo metodi per ridurre il carico di lettura sul nostro database primario.

Un'opzione che è stata suggerita è quella di avere una replica live unidirezionale dal nostro database primario a un database slave.Le applicazioni leggerebbero quindi dal database slave e scriverebbero direttamente nel database primario.COSÌ...

  • L'applicazione legge dallo slave
  • L'applicazione scrive su primario
  • Lo slave primario aggiorna automaticamente

Quali sono i principali pro e contro di questo metodo?

È stato utile?

Soluzione

Alcuni svantaggi:

  • 2 punti di fallimento
  • La logica dell'applicazione dovrà tenere conto del ritardo tra la scrittura di qualcosa e la successiva lettura, poiché non sarà immediatamente disponibile dal database secondario

Una strategia che ho utilizzato è quella di inviare di notte i dati di reporting chiave a un database secondario, denormalizzandolo durante il percorso, in modo che le query complesse possano essere eseguite su quel database invece di bloccare tabelle e rubare risorse dal server OLTP.Non utilizzo alcuno strumento formale di data warehousing o di replica, piuttosto identifico le query problematiche che sono ok senza dati aggiornati e creo strutture di dati sul server secondario appositamente per tali query.

Ci sono sicuramente dei vantaggi nell'approccio "replica tutto":

  • Puoi eseguire qualsiasi query ad hoc sul secondario, poiché contiene tutti i tuoi dati
  • Se il tuo server primario muore, puoi riutilizzare rapidamente il secondario per subentrare

Altri suggerimenti

Stiamo utilizzando repliche unidirezionali, ma non dalla stessa applicazione.Le nostre applicazioni eseguono la lettura e la scrittura nel database master, i dati vengono sincronizzati nel database replca e gli strumenti di reporting utilizzano questa replica.

Non vogliamo che la nostra applicazione legga da un database diverso, quindi in questo scenario suggerirei di utilizzare gruppi di file e partizionamento sul database principale.L'utilizzo di gruppi di file (soprattutto su unità diverse) e il partizionamento di file e indici può aiutare molto a migliorare le prestazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top