Ottimizzare le prestazioni di MySQL in macchine virtuali Linux di AzureOptimize MySQL Performance on Azure Linux VMs

Esistono molti fattori che influiscono sulle prestazioni di MySQL in Azure, sia nella selezione dell'hardware virtuale sia nella configurazione software.There are many factors that affect MySQL performance on Azure, both in virtual hardware selection and software configuration. Questo articolo è incentrato sull'ottimizzazione delle prestazioni tramite la configurazione dell'archiviazione, del sistema e del database.This article focuses on optimizing performance through storage, system, and database configurations.

Importante

Azure offre due diversi modelli di distribuzione per creare e usare le risorse: Azure Resource Manager e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Azure Resource Manager and classic. Questo articolo illustra l'uso del modello di distribuzione classica.This article covers using the classic deployment model. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti.Microsoft recommends that most new deployments use the Resource Manager model. Per informazioni sulle ottimizzazioni delle macchine virtuali Linux usando il modello di Resource Manager, vedere Ottimizzare la VM Linux su Azure.For information about Linux VM optimizations with the Resource Manager model, see Optimize your Linux VM on Azure.

A partire dal 15 novembre 2017, le macchine virtuali saranno disponibili solo nel portale di Azure.Starting November 15, 2017, Virtual Machines will be available only in the Azure portal. L'accesso dal portale classico non sarà più supportato.Access from the classic portal will no longer be supported.

Usare RAID in una macchina virtuale di AzureUtilize RAID on an Azure virtual machine

L'archiviazione è il fattore che influisce maggiormente sulle prestazioni del database negli ambienti cloud.Storage is the key factor that affects database performance in cloud environments. Rispetto a un singolo disco, RAID può fornire un accesso più rapido tramite la concorrenza.Compared to a single disk, RAID can provide faster access via concurrency. Per altre informazioni, vedere la pagina Livelli RAID standard.For more information, see Standard RAID levels.

Tramite RAID è possibile migliorare la velocità effettiva di I/O del disco e il tempo di risposta di I/O in Azure.Disk I/O throughput and I/O response time in Azure can be improved through RAID. I test di laboratorio indicano che in media la velocità effettiva di I/O del disco può essere raddoppiata e il tempo di risposta di I/O può essere dimezzato raddoppiando il numero di dischi RAID (da due a quattro, da quattro a otto e così via).Our lab tests show that disk I/O throughput can be doubled and I/O response time can be reduced by half on average when the number of RAID disks is doubled (from two to four, four to eight, etc.). Per informazioni dettagliate, vedere Appendice A .See Appendix A for details.

Oltre all'I/O del disco, aumentando il livello RAID migliorano anche le prestazioni di MySQL.In addition to disk I/O, MySQL performance improves when you increase the RAID level. Per informazioni dettagliate, vedere Appendice B .See Appendix B for details.

Può inoltre essere utile prendere in considerazione le dimensioni del blocco.You might also want to consider the chunk size. In generale, con blocchi di dimensioni maggiori si ha un sovraccarico ridotto, soprattutto per le scritture di grandi dimensioni.In general, when you have a larger chunk size, you get lower overhead, especially for large writes. Tuttavia, blocchi di dimensioni troppo grandi potrebbero far aumentare il sovraccarico, rendendo impossibile l'uso del RAID.However, when the chunk size is too large, it might add additional overhead that prevents you from taking advantage of RAID. La dimensione predefinita corrente, dimostratasi ottimale per la maggior parte degli ambienti di produzione, è pari a 512 KB.The current default size is 512 KB, which is proven to be optimal for most general production environments. Per informazioni dettagliate, vedere Appendice C .See Appendix C for details.

Esistono limiti al numero di dischi che è possibile aggiungere per i diversi tipi di macchine virtuali.There are limits on how many disks you can add for different virtual machine types. Questi limiti sono descritti in dettaglio in Dimensioni delle macchine virtuali e dei servizi cloud per Azure.These limits are detailed in Virtual machine and cloud service sizes for Azure. Per l'esempio RAID proposto in questo articolo si dovrà disporre di quattro dischi dati collegati, anche se è possibile scegliere di configurare RAID con un numero di dischi inferiore.You will need four attached data disks to follow the RAID example in this article, although you can choose to set up RAID with fewer disks.

In questo articolo si presuppone che l'utente abbia già creato una macchina virtuale Linux e che MYSQL sia già stato installato e configurato.This article assumes you have already created a Linux virtual machine and have MYSQL installed and configured. Per altre informazioni, vedere la documentazione sulle modalità di installazione di MySQL in Azure.For more information on getting started, see How to install MySQL on Azure.

Configurare RAID in AzureSet up RAID on Azure

La procedura seguente illustra la creazione di RAID in Azure tramite il portale di Azure.The following steps show how to create RAID on Azure by using the Azure portal. È inoltre possibile configurare RAID usando gli script di Windows PowerShell.You can also set up RAID by using Windows PowerShell scripts. In questo esempio verrà configurato RAID 0 con quattro dischi.In this example, we will configure RAID 0 with four disks.

Aggiungere un disco dati alla macchina virtualeAdd a data disk to your virtual machine

Nel portale di Azure accedere al dashboard e selezionare la macchina virtuale a cui si vuole aggiungere un disco dati.In the Azure portal, go to the dashboard and select the virtual machine to which you want to add a data disk. In questo esempio la macchina virtuale è mysqlnode1.In this example, the virtual machine is mysqlnode1.

Fare clic su Dischi e quindi su Collega nuovo.Click Disks and then click Attach New.

Aggiunta di dischi nelle macchine virtuali

Creare un nuovo disco da 500 GB.Create a new 500 GB disk. Assicurarsi che Preferenze cache dell'host sia impostato su Nessuna.Make sure that Host Cache Preference is set to None. Al termine, fare clic su OK.When you're finished, click OK.

Attach Empty Disk

Verrà aggiunto un disco vuoto nella macchina virtuale.This adds one empty disk into your virtual machine. Ripetere questo passaggio tre volte in modo da disporre di quattro dischi dati per RAID.Repeat this step three more times so that you have four data disks for RAID.

È possibile visualizzare le unità aggiunte nella macchina virtuale esaminando il log dei messaggi del kernel.You can see the added drives in the virtual machine by looking at the kernel message log. Ad esempio, per visualizzarlo in Ubuntu, usare il seguente comando:For example, to see this on Ubuntu, use the following command:

sudo grep SCSI /var/log/dmesg

Creare RAID con i dischi aggiuntiviCreate RAID with the additional disks

I seguenti passaggi illustrano come configurare RAID software in Linux.The following steps describe how to configure software RAID on Linux.

Nota

Se si usa il file system XFS, eseguire la seguente procedura dopo aver creato RAID.If you are using the XFS file system, execute the following steps after you have created RAID.

Per installare XFS su Debian, Ubuntu o Linux Mint, usare il seguente comando:To install XFS on Debian, Ubuntu, or Linux Mint, use the following command:

apt-get -y install xfsprogs  

Per installare XFS su Fedora, CentOS o RHEL, usare il seguente comando:To install XFS on Fedora, CentOS, or RHEL, use the following command:

yum -y install xfsprogs  xfsdump

Impostare un nuovo percorso di archiviazioneSet up a new storage path

Usare il comando seguente per impostare un nuovo percorso di archiviazione:Use the following command to set up a new storage path:

root@mysqlnode1:~# mkdir -p /RAID0/mysql

Copiare i dati originali nel nuovo percorso di archiviazioneCopy the original data to the new storage path

Usare il comando seguente per copiare dati nel nuovo percorso di archiviazione:Use the following command to copy data to the new storage path:

root@mysqlnode1:~# cp -rp /var/lib/mysql/* /RAID0/mysql/

Modificare le autorizzazioni in modo che MySQL possa avere accesso in lettura e in scrittura al disco datiModify permissions so MySQL can access (read and write) the data disk

Usare il comando seguente per modificare le autorizzazioni:Use the following command to modify permissions:

root@mysqlnode1:~# chown -R mysql.mysql /RAID0/mysql && chmod -R 755 /RAID0/mysql

Modificare l'algoritmo di pianificazione di I/O del discoAdjust the disk I/O scheduling algorithm

Linux implementa quattro tipi di algoritmi di pianificazione di I/O:Linux implements four types of I/O scheduling algorithms:

  • Algoritmo NOOP (Nessuna operazione)NOOP algorithm (No Operation)
  • Algoritmo di scadenza (Scadenza)Deadline algorithm (Deadline)
  • Algoritmo di accodamento pienamente equo (CFQ, Completely fair queuing)Completely fair queuing algorithm (CFQ)
  • Algoritmo del periodo di budget (Anticipatorio)Budget period algorithm (Anticipatory)

Per ottimizzare le prestazioni è possibile selezionare diverse utilità di pianificazione di I/O in scenari diversi.You can select different I/O schedulers under different scenarios to optimize performance. In un ambiente ad accesso completamente casuale non esiste una differenza significativa tra gli algoritmi CFQ e di scadenza a livello di prestazioni.In a completely random access environment, there is not a significant difference between the CFQ and Deadline algorithms for performance. È consigliabile impostare l'ambiente del database MySQL sull'algoritmo di scadenza per maggiore stabilità.We recommend that you set the MySQL database environment to Deadline for stability. Se è presente un I/O sequenziale considerevole, l'algoritmo CFQ potrebbe ridurre le prestazioni di I/O del disco.If there is a lot of sequential I/O, CFQ might reduce disk I/O performance.

Per le unità SSD e altri dispositivi, con gli algoritmi NOOP o di scadenza è possibile ottenere prestazioni migliori rispetto all'utilità di pianificazione predefinita.For SSD and other equipment, NOOP or Deadline can achieve better performance than the default scheduler.

Prima del kernel 2.5, l'algoritmo di pianificazione di I/O predefinito è quello di scadenza.Prior to the kernel 2.5, the default I/O scheduling algorithm is Deadline. A partire dal kernel 2.6.18, l'algoritmo CFQ è diventato l'algoritmo di pianificazione di I/O predefinito.Starting with the kernel 2.6.18, CFQ became the default I/O scheduling algorithm. È possibile specificare questa impostazione in fase di avvio del kernel oppure modificarla in maniera dinamica mentre il sistema è in esecuzione.You can specify this setting at kernel boot time or dynamically modify this setting when the system is running.

Il seguente esempio mostra come controllare e impostare l'utilità di pianificazione predefinita per l'algoritmo NOOP nel gruppo di distribuzione Debian.The following example demonstrates how to check and set the default scheduler to the NOOP algorithm in the Debian distribution family.

Visualizzare l'utilità di pianificazione di I/O correnteView the current I/O scheduler

Per visualizzare l'utilità di pianificazione, eseguire il comando seguente:To view the scheduler run the following command:

root@mysqlnode1:~# cat /sys/block/sda/queue/scheduler

Si visualizzerà il seguente output, che indica l'utilità di pianificazione corrente:You will see following output, which indicates the current scheduler:

noop [deadline] cfq

Modificare il dispositivo corrente (/dev/sda) dell'algoritmo di pianificazione di I/OChange the current device (/dev/sda) of the I/O scheduling algorithm

Eseguire i comandi seguenti per cambiare il dispositivo corrente:Run the following commands to change the current device:

azureuser@mysqlnode1:~$ sudo su -
root@mysqlnode1:~# echo "noop" >/sys/block/sda/queue/scheduler
root@mysqlnode1:~# sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"/g' /etc/default/grub
root@mysqlnode1:~# update-grub

Nota

Impostare questa opzione solo per /dev/sda è inutile.Setting this for /dev/sda alone is not useful. L'opzione deve essere impostata su tutti i dischi dati in cui si trova il database.It must be set on all data disks where the database resides.

Si dovrebbe visualizzare il seguente output, che indica che grub.cfg è stato ricreato correttamente e che l'utilità di pianificazione predefinita è stata impostata su NOOP:You should see the following output, indicating that grub.cfg has been rebuilt successfully and that the default scheduler has been updated to NOOP:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-34-generic
Found initrd image: /boot/initrd.img-3.13.0-34-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done

Per il gruppo di distribuzione Redhat è necessario solo il seguente comando:For the Red Hat distribution family, you need only the following command:

echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local

Configurare le impostazioni per le operazioni del file systemConfigure system file operations settings

Una delle procedure consigliate consiste nel disabilitare la funzionalità di registrazione dell'atime nel file system.One best practice is to disable the atime logging feature on the file system. L'atime è l'ora dell'ultimo accesso al file.Atime is the last file access time. Ogni volta che si accede a un file, il file system registra il timestamp nel log.Whenever a file is accessed, the file system records the timestamp in the log. Tuttavia, queste informazioni vengono usate raramente.However, this information is rarely used. Se non è necessaria, è possibile disabilitare questa opzione, riducendo così il tempo complessivo di accesso al disco.You can disable it if you don't need it, which will reduce overall disk access time.

Per disattivare la registrazione dell'atime, è necessario modificare il file di configurazione del file system /etc/. fstab e aggiungere l'opzione noatime.To disable atime logging, you need to modify the file system configuration file /etc/ fstab and add the noatime option.

Modificare ad esempio il file vim /etc/fstab aggiungendo l'opzione noatime come illustrato nell'esempio di seguito:For example, edit the vim /etc/fstab file, adding the noatime as shown in the following sample:

# CLOUD_IMG: This file was created/modified by the Cloud Image build process
UUID=3cc98c06-d649-432d-81df-6dcd2a584d41       /        ext4   defaults,discard        0 0
#Add the “noatime” option below to disable atime logging
UUID="431b1e78-8226-43ec-9460-514a9adf060e"     /RAID0   xfs   defaults,nobootwait, noatime 0 0
/dev/sdb1       /mnt    auto    defaults,nobootwait,comment=cloudconfig 0       2

Rimontare il file system con il seguente comando:Then, remount the file system with the following command:

mount -o remount /RAID0

Verificare il risultato modificato.Test the modified result. Quando si modifica il file di test, il tempo di accesso non viene aggiornato.When you modify the test file, the access time is not updated. Negli esempi seguenti viene illustrano l'aspetto del codice prima e dopo la modifica.The following examples show what the code looks like before and after modification.

Prima:Before:

Codice prima delle modifiche di accesso

Dopo:After:

Codice dopo le modifiche di accesso

Aumentare il numero massimo di handle di sistema per la concorrenza elevataIncrease the maximum number of system handles for high concurrency

MySQL è un database a concorrenza elevata.MySQL is a high concurrency database. Il numero predefinito di handle simultanei per Linux è pari a 1024, ma non sempre è sufficiente.The default number of concurrent handles is 1024 for Linux, which is not always sufficient. Eseguire la seguente procedura per aumentare il numero massimo di handle simultanei del sistema, in modo da supportare la concorrenza elevata di MySQL.Use the following steps to increase the maximum concurrent handles of the system to support high concurrency of MySQL.

Modificare il file limits.confModify the limits.conf file

Aggiungere le seguenti quattro righe nel file /etc/security/limits.conf per aumentare il numero massimo di handle simultanei consentiti.To increase the maximum allowed concurrent handles, add the following four lines in the /etc/security/limits.conf file. Si noti che 65536 è il numero massimo di handle che il sistema è in grado di supportare.Note that 65536 is the maximum number that the system can support.

* <span data-ttu-id="177be-204">soft nofile 65536</span><span class="sxs-lookup"><span data-stu-id="177be-204">soft nofile 65536</span></span>
* <span data-ttu-id="177be-205">hard nofile 65536</span><span class="sxs-lookup"><span data-stu-id="177be-205">hard nofile 65536</span></span>
* <span data-ttu-id="177be-206">soft nproc 65536</span><span class="sxs-lookup"><span data-stu-id="177be-206">soft nproc 65536</span></span>
* <span data-ttu-id="177be-207">hard nproc 65536</span><span class="sxs-lookup"><span data-stu-id="177be-207">hard nproc 65536</span></span>

Aggiornare il sistema con i nuovi limitiUpdate the system for the new limits

Per aggiornare il sistema, eseguire i comandi seguenti:To update the system, run the following commands:

ulimit -SHn 65536
ulimit -SHu 65536

Assicurarsi che i limiti vengano aggiornati in fase di avvioEnsure that the limits are updated at boot time

Immettere i seguenti comandi di avvio nel file /etc/rc.local in modo che la modifica sia applicata all'avvio.Put the following startup commands in the /etc/rc.local file so it will take effect at boot time.

echo “ulimit -SHn 65536” >>/etc/rc.local
echo “ulimit -SHu 65536” >>/etc/rc.local

Ottimizzare il database MySQLMySQL database optimization

Per configurare MySQL in Azure è possibile usare la stessa strategia di ottimizzazione delle prestazioni di un computer locale.To configure MySQL on Azure, you can use the same performance-tuning strategy you use on an on-premises machine.

Le principali regole di ottimizzazione di I/O sono:The main I/O optimization rules are:

  • Aumentare la dimensione della cache.Increase the cache size.
  • Ridurre il tempo di risposta di I/O.Reduce I/O response time.

Per ottimizzare le impostazioni del server MySQL, è possibile aggiornare il file my.cnf, ovvero il file di configurazione predefinito per i computer server e client.To optimize MySQL server settings, you can update the my.cnf file, which is the default configuration file for both server and client computers.

I seguenti elementi di configurazione sono i principali fattori che influiscono sulle prestazioni di MySQL:The following configuration items are the main factors that affect MySQL performance:

  • innodb_buffer_pool_size: il pool di buffer contiene i dati memorizzati nel buffer e l'indice.innodb_buffer_pool_size: The buffer pool contains buffered data and the index. In genere è impostato al 70% della memoria fisica.This is usually set to 70 percent of physical memory.
  • innodb_log_file_size: la dimensione del log di ripristino.innodb_log_file_size: This is the redo log size. È possibile usare i log di ripristino per assicurare che le operazioni di scrittura siano veloci, affidabili e recuperabili dopo un arresto anomalo.You use redo logs to ensure that write operations are fast, reliable, and recoverable after a crash. È impostato su 512 MB, pertanto sarà disponibile una notevole quantità di spazio per la registrazione delle operazioni di scrittura.This is set to 512 MB, which will give you plenty of space for logging write operations.
  • max_connections: in alcuni casi le applicazioni non chiudono correttamente le connessioni.max_connections: Sometimes applications do not close connections properly. Un valore più elevato garantirà al server più tempo per riciclare le connessioni inattive.A larger value will give the server more time to recycle idled connections. Il numero massimo di connessioni è 10.000, ma quello consigliato è 5.000.The maximum number of connections is 10,000, but the recommended maximum is 5,000.
  • Innodb_file_per_table: questa impostazione consente di abilitare o disabilitare la capacità di InnoDB di archiviare le tabelle in file separati.Innodb_file_per_table: This setting enables or disables the ability of InnoDB to store tables in separate files. Una volta attiva, l'opzione assicura che le diverse operazioni avanzate di amministrazione vengano eseguite in modo efficiente.Turn on the option to ensure that several advanced administration operations can be applied efficiently. Dal punto di vista delle prestazioni, può velocizzare la trasmissione degli spazi di tabella e ottimizzare le prestazioni della gestione dei detriti.From a performance point of view, it can speed up the table space transmission and optimize the debris management performance. L'impostazione consigliata è ON.The recommended setting for this option is ON.
    Da MySQL 5.6, l'impostazione predefinita è ON, pertanto non è necessaria alcuna azione.From MySQL 5.6, the default setting is ON, so no action is required. Per le versioni precedenti, l'impostazione predefinita è OFF.For earlier versions, the default setting is OFF. ed è necessario modificarla prima del caricamento dati, in quanto si applica solo alle tabelle appena create.The setting should be changed before data is loaded, because only newly created tables are affected.
  • innodb_flush_log_at_trx_commit: il valore predefinito è 1, con l'ambito impostato su 0~2.innodb_flush_log_at_trx_commit: The default value is 1, with the scope set to 0~2. Il valore predefinito è l'opzione più adatta per il database MySQL come pacchetto autonomo.The default value is the most suitable option for standalone MySQL DB. Se impostato su 2, il valore assicura la massima integrità dei dati ed è appropriato per il server Master nel cluster MySQL.The setting of 2 enables the most data integrity and is suitable for Master in MySQL Cluster. Se impostato su 0, il valore tollera la perdita di dati e questo può influire sulla affidabilità, garantendo in alcuni casi prestazioni migliori. Il valore 0 è appropriato per il server Slave nel cluster MySQL.The setting of 0 allows data loss, which can affect reliability (in some cases with better performance), and is suitable for Slave in MySQL Cluster.
  • Innodb_log_buffer_size: il buffer del log consente l'esecuzione delle transazioni senza scaricare il log sul disco prima del commit delle transazioni.Innodb_log_buffer_size: The log buffer allows transactions to run without having to flush the log to disk before the transactions commit. Tuttavia, se è presente un oggetto binario o un campo di testo di grandi dimensioni, la cache verrà usata rapidamente e verrà attivato un I/O frequente del disco.However, if there is large binary object or text field, the cache will be consumed quickly and frequent disk I/O will be triggered. Se la variabile di stato Innodb_log_waits è diversa da 0, è consigliabile aumentare le dimensioni del buffer.It is better increase the buffer size if Innodb_log_waits state variable is not 0.
  • query_cache_size: è consigliabile disabilitare questa opzione fin dall'inizio.query_cache_size: The best option is to disable it from the outset. Impostare query_cache_size su 0 (in MySQL 5.6 questa è l'impostazione predefinita) e usare altri metodi per velocizzare le query.Set query_cache_size to 0 (this is the default setting in MySQL 5.6) and use other methods to speed up queries.

Vedere l'Appendice D per un confronto delle prestazioni prima e dopo l'ottimizzazione.See Appendix D for a comparison of performance before and after the optimization.

Attivare il log di query lente di MySQL per l'analisi del collo di bottiglia delle prestazioniTurn on the MySQL slow query log for analyzing the performance bottleneck

Il log di query lente di MySQL consente di identificare le query lente per MySQL.The MySQL slow query log can help you identify the slow queries for MySQL. Dopo l'abilitazione del log di query lente di MySQL, è possibile usare strumenti di MySQL come mysqldumpslow per identificare il collo di bottiglia delle prestazioni.After enabling the MySQL slow query log, you can use MySQL tools like mysqldumpslow to identify the performance bottleneck.

Per impostazione log non è abilitato.By default, this is not enabled. L'attivazione del log di query lente potrebbe usare alcune risorse della CPU.Turning on the slow query log might consume some CPU resources. È consigliabile abilitarlo temporaneamente per la risoluzione dei colli di bottiglia delle prestazioni.We recommend that you enable this temporarily for troubleshooting performance bottlenecks. Per attivare il log di query lente:To turn on the slow query log:

  1. Modificare il file my.cnf aggiungendo alla fine del file le seguenti righe:Modify the my.cnf file by adding the following lines to the end:

     long_query_time = 2
     slow_query_log = 1
     slow_query_log_file = /RAID0/mysql/mysql-slow.log
    
  2. Riavviare il server MySQL.Restart the MySQL server.

     service  mysql  restart
    
  3. Verificare se l'impostazione è stata applicata tramite il comando show.Check whether the setting is taking effect by using the show command.

Slow-query-log ON

Slow-query-log results

Come si può vedere, in questo esempio è stata attivata la funzionalità relativa alle query lente.In this example, you can see that the slow query feature has been turned on. È quindi possibile usare lo strumento mysqldumpslow per individuare i colli di bottiglia delle prestazioni e ottimizzare le prestazioni, ad esempio aggiungendo indici.You can then use the mysqldumpslow tool to determine performance bottlenecks and optimize performance, such as adding indexes.

AppendiciAppendices

Di seguito sono riportati i dati di esempio dei test sulle prestazioni prodotti nell'ambiente di destinazione,The following are sample performance test data produced in a targeted lab environment. che forniscono informazioni generali sulla tendenza dei dati delle prestazioni con i diversi approcci di ottimizzazione delle prestazioni.They provide general background on the performance data trend with different performance tuning approaches. I risultati possono tuttavia variare in ambienti o versioni di prodotto diverse.The results might vary under different environment or product versions.

Appendice AAppendix A

Prestazioni del disco (IOPS) con livelli RAID diversiDisk performance (IOPS) with different RAID levels

Prestazioni del disco (IOPS) con livelli RAID diversi

Comandi di testTest commands

fio -filename=/path/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64 -runtime=30 -group_reporting -name=test-randwrite

Nota

Il carico di lavoro di questo test usa 64 thread, al fine di raggiungere il limite massimo di RAID.The workload of this test uses 64 threads, trying to reach the upper limit of RAID.

Appendice BAppendix B

Confronto delle prestazioni (velocità effettiva) di MySQL con livelli RAID diversi MySQL performance (throughput) comparison with different RAID levels
(XFS file system)(XFS file system)

Confronto delle prestazioni (OLTP) di MySQL con livelli RAID diversi
Confronto delle prestazioni (OLTP) di MySQL con livelli RAID diversi

Comandi di testTest commands

mysqlslap -p0ps.123 --concurrency=2 --iterations=1 --number-int-cols=10 --number-char-cols=10 -a --auto-generate-sql-guid-primary --number-of-queries=10000 --auto-generate-sql-load-type=write –engine=innodb

Confronto delle prestazioni (OLTP) di MySQL con livelli RAID diversiMySQL performance (OLTP) comparison with different RAID levels
Confronto delle prestazioni (OLTP) di MySQL con livelli RAID diversiMySQL performance (OLTP) comparison with different RAID levels

Comandi di testTest commands

time sysbench --test=oltp --db-driver=mysql --mysql-user=root --mysql-password=0ps.123  --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-socket=/var/run/mysqld/mysqld.sock --mysql-db=test --oltp-table-size=1000000 prepare

Appendice CAppendix C

Confronto delle prestazioni (IOPS) del disco per dimensioni del blocco diverseDisk performance (IOPS) comparison for different chunk sizes
(XFS file system)(XFS file system)

Comandi di testTest commands

fio -filename=/path/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=30G -numjobs=64 -runtime=30 -group_reporting -name=test-randwrite
fio -filename=/path/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=1G -numjobs=64 -runtime=30 -group_reporting -name=test-randwrite  

Le dimensioni del file usato per il test sono pari rispettivamente a 30 GB e 1 GB, con file system XFS RAID 0 (4 dischi).The file sizes used for this testing are 30 GB and 1 GB, respectively, with RAID 0 (4 disks) XFS file system.

Appendice DAppendix D

Confronto delle prestazioni (velocità effettiva) di MySQL prima e dopo l'ottimizzazioneMySQL performance (throughput) comparison before and after optimization
(XFS file system)(XFS File System)

Confronto delle prestazioni (velocità effettiva) di MySQL prima e dopo l'ottimizzazione

Comandi di testTest commands

mysqlslap -p0ps.123 --concurrency=2 --iterations=1 --number-int-cols=10 --number-char-cols=10 -a --auto-generate-sql-guid-primary --number-of-queries=10000 --auto-generate-sql-load-type=write –engine=innodb,misam

L'impostazione di configurazione per impostazione predefinita e per l'ottimizzazione è la seguente:The configuration setting for default and optimization is as follows:

ParametriParameters DefaultDefault OttimizzazioneOptimization
innodb_buffer_pool_sizeinnodb_buffer_pool_size NessunaNone 7 GB7 GB
innodb_log_file_sizeinnodb_log_file_size 5 MB5 MB 512 MB512 MB
max_connectionsmax_connections 100100 50005000
innodb_file_per_tableinnodb_file_per_table 00 11
innodb_flush_log_at_trx_commitinnodb_flush_log_at_trx_commit 11 22
innodb_log_buffer_sizeinnodb_log_buffer_size 8 MB8 MB 128 MB128 MB
query_cache_sizequery_cache_size 16 MB16 MB 00

Per parametri di configurazione dell'ottimizzazione più dettagliati, fare riferimento alle istruzioni ufficiali di MySQL.For more detailed optimization configuration parameters, refer to the MySQL official instructions.

Ambiente di testTest environment

HardwareHardware DettagliDetails
CPUCPU AMD Opteron(tm) Processore 4171 HE/4 coreAMD Opteron(tm) Processor 4171 HE/4 cores
MemoriaMemory 14 GB14 GB
DiscoDisk 10 GB/disco10 GB/disk
OSOS Ubuntu 14.04.1 LTSUbuntu 14.04.1 LTS