MySQL
Configuratie en afstemming
Zoeken…
Opmerkingen
Configuratie gebeurt op een van de volgende 3 manieren:
- opdrachtregelopties
- het
my.cnf
configuratiebestand - variabelen instellen vanuit de server
Opdrachtregelopties hebben de vorm mysqld --long-parameter-name=value --another-parameter
. Dezelfde parameters kunnen in het my.conf
configuratiebestand worden geplaatst. Sommige parameters kunnen worden geconfigureerd met behulp van systeemvariabelen vanuit MySQL. Raadpleeg de officiële documentatie voor een volledige lijst met parameters.
Variabelen kunnen een streepje -
of onderstrepingsteken _
. Spaties kunnen bestaan rond de =
. Grote aantallen kunnen worden gevolgd door K
, M
, G
voor kilo-, mega- en giga-. Eén instelling per regel.
Vlaggen: meestal ON
en 1
zijn synoniem, idem voor OFF
en 0
. Sommige vlaggen hebben niets achter zich.
Wanneer u de instellingen in my.cnf
plaatst, moeten alle instellingen voor de server in de sectie [mysqld]
, dus voeg niet blindelings instellingen toe aan het einde van het bestand. (Opmerking: voor tools waarmee meerdere MySQL-exemplaren één my.cnf kunnen delen, kunnen de sectienamen verschillen.)
InnoDB-prestaties
Er zijn honderden instellingen die in my.cnf kunnen worden geplaatst. Voor de 'lite' gebruiker van MySQL doen ze er niet zoveel toe.
Zodra uw database niet-triviaal wordt, is het raadzaam om de volgende parameters in te stellen:
innodb_buffer_pool_size
Dit moet worden ingesteld op ongeveer 70% van het beschikbare RAM-geheugen (als u minimaal 4 GB RAM heeft; een kleiner percentage als u een kleine VM of antieke machine hebt). De instelling bepaalt de hoeveelheid cache die wordt gebruikt door de InnoDB ENGINE. Daarom is het erg belangrijk voor de prestaties van InnoDB.
Parameter waarmee enorme gegevens kunnen worden ingevoegd
Als u afbeeldingen of video's in de kolom wilt opslaan, moeten we de waarde wijzigen die uw toepassing nodig heeft
max_allowed_packet = 10M
M is Mb, G in Gb, K in Kb
Verhoog de tekenreekslimiet voor group_concat
group_concat
wordt gebruikt om niet-nulwaarden in een group
group_concat
. De maximale lengte van de resulterende tekenreeks kan worden ingesteld met de optie group_concat_max_len
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
Het instellen van de GLOBAL
variabele zorgt voor een permanente verandering, terwijl het instellen van de variabele SESSION
de waarde voor de huidige sessie instelt.
Minimale InnoDB-configuratie
Dit is een absoluut minimum voor MySQL-servers die InnoDB-tabellen gebruiken. Met behulp van InnoDB is querycache niet vereist. Win schijfruimte terug wanneer een tabel of database DROP
ed is. Als u SSD's gebruikt, is spoelen een redundante bewerking (SDD's zijn niet sequentieel).
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
samenloop
Zorg ervoor dat we meer dan de standaard 4 threads kunnen maken door innodb_thread_concurrency
te stellen op oneindig (0); dit laat InnoDB beslissen op basis van optimale uitvoering.
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
Gebruik van de harde schijf
Stel de capaciteit (normale belasting) en capacity_max (absoluut maximum) van IOPS voor MySQL in. De standaardwaarde van 200 is prima voor HDD's, maar tegenwoordig, met SSD's die duizenden IOPS ondersteunen, wilt u dit aantal waarschijnlijk aanpassen. Er zijn veel tests die u kunt uitvoeren om IOPS te bepalen. De bovenstaande waarden moeten bijna die limiet zijn als u een speciale MySQL-server gebruikt . Als u andere services op dezelfde computer uitvoert, moet u de juiste verdeling maken.
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
RAM-gebruik
Stel de beschikbare RAM in op MySQL. Hoewel de vuistregel 70-80% is, hangt dit echt af van het feit of uw exemplaar al dan niet is toegewezen aan MySQL en hoeveel RAM er beschikbaar is. Heeft RAM (dwz middelen) niet verspillen als je een heleboel beschikbaar.
innodb_buffer_pool_size = 10G
Veilige MySQL-codering
De standaardcodering aes-128-ecb
maakt gebruik van de Electronic Codebook (ECB) -modus, die onveilig is en nooit mag worden gebruikt. Voeg in plaats daarvan het volgende toe aan uw configuratiebestand:
block_encryption_mode = aes-256-cbc