

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Supporto per memcached MySQL
<a name="Appendix.MySQL.Options.memcached"></a>

Amazon RDS supporta l'uso dell'interfaccia `memcached` in tabelle InnoDB, introdotta in MySQL 5.6. L'API `memcached` permette alle applicazioni di usare tabelle InnoDB in modo simile ai datastore di coppie chiave/valore NoSQL.

**Nota**  
L’interfaccia memcached non è più disponibile in MySQL 8.4. Quando aggiorni le istanze database a MySQL 8.4, devi disabilitare `memcached` nei gruppi di opzioni esistenti.

L'interfaccia `memcached` è una cache semplice basata su chiave. Le applicazioni utilizzano `memcached` per inserire, manipolare e recuperare dalla cache coppie di dati a chiave-valore. MySQL 5.6 ha introdotto un plugin che implementa un servizio daemon che espone dati di tabelle InnoDB attraverso il protocollo `memcached`. Per ulteriori informazioni sul plugin `memcached` MySQL, consulta [InnoDB Integration with memcached](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached.html).

**Per abilitare il supporto per memcached per un'istanza database RDS per MySQL**

1. Determinare il gruppo di sicurezza da utilizzare per controllare l'accesso all'interfaccia `memcached`. Se il set di applicazioni che sta già utilizzando l'interfaccia SQL è lo stesso che accederà all'interfaccia `memcached`, è possibile utilizzare lo stesso gruppo di sicurezza VPC utilizzato dall'interfaccia SQL. Se il set di applicazioni che accederà all'interfaccia `memcached` è diverso, definire un nuovo gruppo di sicurezza VPC o DB. Per ulteriori informazioni sulla gestione dei gruppi di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md) 

1. Creare un gruppo di opzioni di database personalizzato, selezionando MySQL come tipo di motore e versione. Per ulteriori informazioni sulla creazione di un gruppo di opzioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Aggiungere l'opzione `MEMCACHED` al gruppo di opzioni. Specificare la porta di `memcached` che l'interfaccia utilizzerà e il gruppo di sicurezza da utilizzare per il controllo dell'accesso all'interfaccia. Per ulteriori informazioni sull'aggiunta di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Se necessario, modificare le impostazioni di opzione per configurare i parametri di `memcached`. Per ulteriori informazioni su come modificare le impostazioni dell'opzione, consulta [Modifica di un'impostazione di un'opzione](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

1. Applica il gruppo di opzioni a un'istanza. Amazon RDS abilita il supporto di `memcached` per l'istanza quando viene applicato il gruppo di opzioni:
   + Il supporto `memcached` per una nuova istanza viene abilitato specificando il gruppo di opzioni personalizzato quando viene avviata l'istanza. Per ulteriori informazioni sul lancio di un'istanza MySQL, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
   + Il supporto `memcached` per un'istanza esistente viene abilitato specificando il gruppo di opzioni personalizzato quando si modifica l'istanza. Per ulteriori informazioni sulla modifica di un'istanza database , consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

1. Specificare a quali colonne delle tabelle MySQL è possibile accedere attraverso l'interfaccia `memcached`. Il plugin `memcached` crea una tabella catalogo chiamata `containers` all'interno di un database dedicato denominato `innodb_memcache`. Inserire una riga nella tabella `containers` per mappare una tabella InnoDB per l'accesso tramite `memcached`. Specificare una colonna della tabella InnoDB utilizzata per archiviare i valori della chiave `memcached` e una o più colonne utilizzate per archiviare i valori dei dati associati alla chiave. Specificare anche il nome utilizzato da un'applicazione `memcached` per fare riferimento a quel set di colonne. Per i dettagli su come inserire righe nella tabella `containers`, consulta [InnoDB memcached Plugin Internals](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-internals.html). Per un esempio di mappatura di una tabella InnoDB e di accesso ad essa tramite `memcached`, consulta [Writing Applications for the InnoDB memcached Plugin](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-developing.html).

1. Se le applicazioni che accedono all'`memcached`interfaccia si trovano su computer o EC2 istanze diversi rispetto alle applicazioni che utilizzano l'interfaccia SQL, aggiungi le informazioni di connessione per tali computer al gruppo di sicurezza VPC associato all'istanza MySQL. Per ulteriori informazioni sulla gestione dei gruppi di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md).

Disabilitare il supporto `memcached` per un'istanza modificandola e specificando il gruppo di opzioni predefinite per la versione di MySQL. Per ulteriori informazioni sulla modifica di un'istanza database , consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

## Considerazioni di sicurezza per memcached di MySQL
<a name="w2aac47c83c15c13"></a>

Il protocollo `memcached` non supporta l'autenticazione degli utenti. Per ulteriori informazioni sulle considerazioni sulla sicurezza di MySQL `memcached`, consulta [Considerazioni di sicurezza per il plugin memcached InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-security.html) nella documentazione di MySQL.

Per migliorare la sicurezza dell'interfaccia `memcached`, è possibile adottare le seguenti misure:
+ Quando aggiungi l'opzione `MEMCACHED` al gruppo di opzioni, specifica una porta diversa dalla porta 11211 predefinita.
+ Assicurati di associare l'`memcached`interfaccia a un gruppo di sicurezza VPC che limiti l'accesso a indirizzi e istanze client noti e EC2 affidabili. Per ulteriori informazioni sulla gestione dei gruppi di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md).

## Informazioni sulla connessione di memcached a MySQL
<a name="w2aac47c83c15c15"></a>

Per accedere all'interfaccia `memcached`, un'applicazione deve specificare sia il nome DNS sia l'istanza Amazon RDS e il numero di porta di `memcached`. Ad esempio, se il nome DNS di un'istanza è `my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com` e l'interfaccia memcached sta usando la porta 11212, le informazioni di connessione specificate in PHP saranno:

 

```
1. <?php
2. 
3. $cache = new Memcache;
4. $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212);
5. ?>
```

**Per trovare il nome DNS e la porta di memcached di un'istanza database MySQL**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nell'angolo in alto a destra di Console di gestione AWS, seleziona la regione che contiene l'istanza DB.

1. Nel pannello di navigazione, seleziona **Database**.

1. Scegliere il nome dell'istanza database MySQL per visualizzarne i dettagli.

1. Nella sezione **Connect (Connessione)**, prendere nota del valore del campo **Endpoint**. Il nome DNS è lo stesso dell'endpoint. Inoltre, tenere presente che la porta nella sezione **Connect (Connessione)** non si utilizza per accedere all'interfaccia `memcached`.

1. Nella sezione **Details (Dettagli)**, prendere nota del nome elencato nel campo **Option Group (Gruppo di opzioni)**.

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il nome del gruppo di opzioni utilizzato dall'istanza database MySQL per visualizzare i dettagli del gruppo di opzioni. Nella sezione **Options (Opzioni)**, prendere nota del valore dell'impostazione **Port (Porta)** per l'opzione **MEMCACHED**.

## Impostazioni dell'opzione memcached di MySQL
<a name="w2aac47c83c15c17"></a>

Amazon RDS espone i parametri `memcached` di MySQL come impostazioni di opzione nell'opzione `MEMCACHED` di Amazon RDS.

### Parametri di memcached di MySQL
<a name="w2aac47c83c15c17b4"></a>
+  `DAEMON_MEMCACHED_R_BATCH_SIZE`: un valore intero che specifica quante operazioni di lettura (get) di `memcached` è necessario eseguire prima di effettuare un COMMIT per iniziare una nuova transazione. I valori validi sono compresi tra 1 e 4294967295; il valore predefinito è 1. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `DAEMON_MEMCACHED_W_BATCH_SIZE`: un valore intero che specifica quante operazioni di scrittura di `memcached`, come add, set o incr, è necessario eseguire prima di effettuare un COMMIT per iniziare una nuova transazione. I valori validi sono compresi tra 1 e 4294967295; il valore predefinito è 1. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `INNODB_API_BK_COMMIT_INTERVAL`: un valore intero che specifica con quanta frequenza effettuare auto-commit delle connessioni inattive che utilizzano l'interfaccia `memcached` di InnoDB. I valori validi sono compresi tra 1 e 1073741824; il valore predefinito è 5. L'opzione ha effetto immediato senza necessità di riavviare l'istanza.
+  `INNODB_API_DISABLE_ROWLOCK`: un valore booleano che disabilita (1 (true)) o abilita (0 (false)) l'utilizzo di blocchi di riga quando si utilizza l'interfaccia `memcached` di InnoDB. Il valore predefinito è 0 (false). L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `INNODB_API_ENABLE_MDL`: un valore booleano che quando impostato su 0 (false) blocca la tabella utilizzata dal plugin `memcached` di InnoDB, in modo che non possa essere eliminata o modificata da DDL attraverso l'interfaccia SQL. Il valore predefinito è 0 (false). L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `INNODB_API_TRX_LEVEL`: un valore intero che specifica il livello di isolamento della transazione per query elaborate dall'interfaccia `memcached`. I valori consentiti sono da 0 a 3. Il valore predefinito è 0. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.

Amazon RDS configura questi parametri `memcached` di MySQL, che non possono essere modificati: `DAEMON_MEMCACHED_LIB_NAME`, `DAEMON_MEMCACHED_LIB_PATH` e `INNODB_API_ENABLE_BINLOG`. I parametri impostati dagli amministratori di MySQL tramite `daemon_memcached_options` sono disponibili come singole impostazioni dell'opzione `MEMCACHED` in Amazon RDS.

### Parametri daemon\$1memcached\$1options di MySQL
<a name="w2aac47c83c15c17b6"></a>
+  `BINDING_PROTOCOL`: una stringa che specifica il protocollo binding da utilizzare. I valori consentiti sono `auto`, `ascii` o `binary`. Quello predefinito è `auto`, vale a dire che il server negozia automaticamente il protocollo con il client. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `BACKLOG_QUEUE_LIMIT` – un valore intero che specifica quante connessioni di rete possono essere in attesa di elaborazione da parte di `memcached`. L'aumento di questo limite potrebbe ridurre gli errori ricevuti da un client che non riesce a effettuare la connessione all'istanza `memcached`, ma non migliora le prestazioni del server. I valori validi sono compresi tra 1 e 2048; il valore predefinito è 1024. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `CAS_DISABLED`: un valore booleano che abilita (1 (true)) o disabilita (0 (false)) l'utilizzo di compare and swap (CAS), che riduce di 8 byte le dimensioni per voce. Il valore predefinito è 0 (false). L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `CHUNK_SIZE`: un valore intero che specifica le dimensioni minime (in byte) del blocco da allocare per chiave, valore e flag della voce più piccola. I valori consentiti sono da 1 a 48. Quello predefinito è 48, ma è possibile migliorare notevolmente l'efficienza della memoria con un valore inferiore. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `CHUNK_SIZE_GROWTH_FACTOR`: un valore float che controlla le dimensioni dei nuovi blocchi. Le dimensioni di un nuovo blocco sono le dimensioni del blocco precedente moltiplicato per `CHUNK_SIZE_GROWTH_FACTOR`. I valori validi sono compresi tra 1 e 2; il valore predefinito è 1,25. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `ERROR_ON_MEMORY_EXHAUSTED`: un valore booleano che, quando è impostato su 1 (true), specifica che `memcached` restituirà un errore anziché eliminare voci quando si esaurisce la memoria per archiviarle. Se impostato su 0 (false), `memcached` eliminerà elementi se la memoria è esaurita. Il valore predefinito è 0 (false). L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `MAX_SIMULTANEOUS_CONNECTIONS`: un valore intero che specifica il numero massimo di connessioni simultanee. Impostare questo valore al di sotto di 10 impedisce l'avvio di MySQL. I valori validi sono compresi tra 10 e 1024; il valore predefinito è 1024. L'opzione non ha effetto fino a quando l'istanza non viene riavviata.
+  `VERBOSITY`: una stringa che specifica il livello di informazioni registrate dal servizio `memcached` nel log degli errori di MySQL. Il valore predefinito è v. L'opzione non ha effetto fino a quando l'istanza non viene riavviata. I valori consentiti sono:
  +  `v` – Avvisi ed errori dei log durante l'esecuzione del loop eventi principale.
  +  `vv`: oltre alle informazioni registrate da v, registra anche ogni comando del client e la risposta.
  +  `vvv`: oltre alle informazioni registrate da vv, registra anche le transizioni dello stato interno.

Amazon RDS configura questi parametri `DAEMON_MEMCACHED_OPTIONS` di MySQL, che non possono essere modificati: `DAEMON_PROCESS`, `LARGE_MEMORY_PAGES`, `MAXIMUM_CORE_FILE_LIMIT`, `MAX_ITEM_SIZE`, `LOCK_DOWN_PAGE_MEMORY`, `MASK`, `IDFILE`, `REQUESTS_PER_EVENT`, `SOCKET` e `USER`.