Table des matières
查看MySQL中参数
影响MySQL性能的重要参数
1.key_buffer_size
索引缓存概述
创建一个索引缓存
修改一个索引缓存
将相关表的索引放到自己创建的索引缓存中
将索引放到默认的kef_buffer中
删除索引缓存
 
配置mysql服务器启动时自动加载索引缓存
2.table_cache
概述
参数调优
3.Innodb_buffer_pool_size
4.Innodb_flush_log_at_trx_commit
5.Innodb_additional_mem_pool_size
6.Innodb_log_buffer_size
7.innodb_log_file_size
8.innodb_lock_wait-timeout
9.Innodb_support_xa
Maison base de données tutoriel mysql 影响Mysql性能的重要参数详解_MySQL

影响Mysql性能的重要参数详解_MySQL

May 27, 2016 pm 01:45 PM
参数 性能

查看MySQL中参数

Mysql服务启动之后,我们可以使用show variables和show status 命令可以查看mysql服务的静态参数值和动态运行状态信息。其中show variables是查看数据库启动后不会动弹更改的值,比如缓冲区大小、字符集、数据文件名等。show status是查看数据库运行期间的动态变化信息,比如锁等待、当前连接数等。查看服务器含有buffer的参数值 \
查看服务器含有buffer的运行状态值

\

影响MySQL性能的重要参数

主要介绍的是使用MyISAM存储引擎的key_buffer_size和table_cache,以及使用使用InnoDB存储引擎的一些以innodb_开头的参数。

1.key_buffer_size

该参数是用来设置索引块(Index Blocks)缓存的大小,它被索引线程共享,此参数只使用MyISAM存储引擎。MySQL5.1之后的版本,可以将指定的表索引缓存入指定的key_buffer,这样可以降低线程之间的竞争。

索引缓存概述

MyISAM存储引擎和其他很多数据库系统一样,采用了一种将最经常访问的表保存在内存中的策略。对应索引区块来说,它维护者一个叫做索引缓存(索引缓冲)的结构体,这个结构体中存放着许多哪些经常使用的索引区块的缓冲区块。对应数据区块来说,Mysql主要依靠系统的本地文件系统缓存。有了索引缓冲后,线程之间不再是串行地访问索引缓存。多个线程可以并行地访问索引缓存。可以设置多个索引缓存,同时也能指定数据表索引到特定的缓存中。

创建一个索引缓存

set global 缓存索引名.key_buffer_size=100*1024;

 \
global是全局限制,表示对每一个新的会话(连接)都有效。

修改一个索引缓存

和创建一个索引缓存一样一样的,都是set global 缓存索引名.key_buffer_size=100*1024;

将相关表的索引放到自己创建的索引缓存中

格式:cache index 表名1,表名2 in 索引缓存将t1、t2、t3表中的索引放到my_cache索引缓存中
\

因为t1表式InnoDB表,t2,t3表为MyISAM表,故只有t2、t3表中的索引可以放到my_cache缓存中。

将索引放到默认的kef_buffer中

可以使用load index into cache +表名

删除索引缓存

将其索引缓冲大小设置为了0,就可以删除了,注意不能删除默认的key_buffer。

 

配置mysql服务器启动时自动加载索引缓存

在MySQL配置文件中添加如下内容(在Windows下叫my.ini,在Linux下叫my.cnf)
my_cache.key_buffer_size=1G #指定索引缓存区大小 init_file=/usr/local/mysql/init_index.sql#在该文件中指定要加载到缓存区德索引
init_index.sql内容如下:
cache index t2 into my_cache;
cache index t3 into my_cache;

2.table_cache

概述

这个参数表示数据库用户打开表的缓冲数量,table_cache与max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量,如果该表已经在缓冲中打开,则直接访问缓存中的表,如果为被缓存,则会将当前表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目,如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前缓存的表,添加新表。

参数调优

通过检查mysqld的状态变量open_tables和opend_tables确定table_cache这个参数的大小。open_tables代表当前打开的表缓冲数量,如果执行flush tables,则系统会关闭一些当前没有使用的表缓存,使得open_tables值减少。opend_tables表示曾经打开的表缓存数,会一直进行累加,不会因为执行flush tables操作,有所减少。如下图,变化还是很明显的。 \
当执行一个查询之后,发现opend_table和open_table都增加了1

\
当再次执行同一个查询之后,发现opend_table和open_table都不再变化
\
由此可见open_table对于设置table_cache更有价值

3.Innodb_buffer_pool_size

这个参数定义了InnoDB存储引擎的表数据和索引数据的最大内存缓存区大小。和MyISAM存储引擎不同,MyISAM的key_buffer_size只缓存索引键,而Innodb_buffer_pool_size同时为数据块和索引块做了缓存,这个只设的越高,访问表中的数据需要的磁盘I/O就越少。但是设置的过大,会导致物理内存竞争过大。

4.Innodb_flush_log_at_trx_commit

这个参数是控制缓存区中的数据写入到日志文件以及日志文件数据刷新到磁盘的操作时机。默认值为1。可以有以下值: 0:日志缓冲每秒一次地写到日志文件,并对日志文件作向磁盘刷新操作,但事务提交不做任何操作。 1:每个事务提交时,日志缓冲被写到日志文件,并且对日志文件做向磁盘刷新操作。 2:每个事务提交时候,日志缓冲被写到日志文件,但是不对日志文件作向磁盘刷新操作,对日志文件每秒向磁盘做一次刷新操作。

5.Innodb_additional_mem_pool_size

这个参数用来存在数据库结构和其他内部数据结果的内存池的大小。

6.Innodb_log_buffer_size

日志缓存大小

7.innodb_log_file_size

日志组中每个日志文件的大小

8.innodb_lock_wait-timeout

Mysql可以自动地监控行锁导致的死锁并经行相应的处理,但是对于表锁导致的死锁,不能自动检测,该参数主要是用于在出现行死锁时候等待指定的时间后回滚。

9.Innodb_support_xa

设置是否支持分布式事务,默认为ON或者1,表示支持。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les performances d'exécution locale du service Embedding dépassent celles d'OpenAI Text-Embedding-Ada-002, ce qui est très pratique ! Les performances d'exécution locale du service Embedding dépassent celles d'OpenAI Text-Embedding-Ada-002, ce qui est très pratique ! Apr 15, 2024 am 09:01 AM

Ollama est un outil super pratique qui vous permet d'exécuter facilement des modèles open source tels que Llama2, Mistral et Gemma localement. Dans cet article, je vais vous présenter comment utiliser Ollama pour vectoriser du texte. Si vous n'avez pas installé Ollama localement, vous pouvez lire cet article. Dans cet article, nous utiliserons le modèle nomic-embed-text[2]. Il s'agit d'un encodeur de texte qui surpasse OpenAI text-embedding-ada-002 et text-embedding-3-small sur les tâches à contexte court et à contexte long. Démarrez le service nomic-embed-text lorsque vous avez installé avec succès o

Comparaison des performances de différents frameworks Java Comparaison des performances de différents frameworks Java Jun 05, 2024 pm 07:14 PM

Comparaison des performances de différents frameworks Java : Traitement des requêtes API REST : Vert.x est le meilleur, avec un taux de requêtes de 2 fois SpringBoot et 3 fois Dropwizard. Requête de base de données : HibernateORM de SpringBoot est meilleur que l'ORM de Vert.x et Dropwizard. Opérations de mise en cache : le client Hazelcast de Vert.x est supérieur aux mécanismes de mise en cache de SpringBoot et Dropwizard. Cadre approprié : choisissez en fonction des exigences de l'application. Vert.x convient aux services Web hautes performances, SpringBoot convient aux applications gourmandes en données et Dropwizard convient à l'architecture de microservices.

Contrôle de sécurité du type de paramètre de fonction C++ Contrôle de sécurité du type de paramètre de fonction C++ Apr 19, 2024 pm 12:00 PM

La vérification de sécurité des types de paramètres C++ garantit que les fonctions n'acceptent que les valeurs des types attendus via des vérifications au moment de la compilation, des vérifications au moment de l'exécution et des assertions statiques, évitant ainsi tout comportement inattendu et les plantages du programme : Vérification du type au moment de la compilation : le compilateur vérifie la compatibilité des types. Vérification du type d'exécution : utilisez Dynamic_cast pour vérifier la compatibilité des types et lancez une exception s'il n'y a pas de correspondance. Assertion statique : affirmer les conditions de type au moment de la compilation.

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes May 03, 2024 pm 09:03 PM

La comparaison des performances des méthodes de retournement des valeurs de clé de tableau PHP montre que la fonction array_flip() fonctionne mieux que la boucle for dans les grands tableaux (plus d'un million d'éléments) et prend moins de temps. La méthode de la boucle for consistant à retourner manuellement les valeurs clés prend un temps relativement long.

Quel impact les fonctions C++ ont-elles sur les performances du programme ? Quel impact les fonctions C++ ont-elles sur les performances du programme ? Apr 12, 2024 am 09:39 AM

L'impact des fonctions sur les performances du programme C++ comprend la surcharge des appels de fonction, la surcharge des variables locales et de l'allocation d'objets : La surcharge des appels de fonction : y compris l'allocation de trame de pile, le transfert de paramètres et le transfert de contrôle, ce qui a un impact significatif sur les petites fonctions. Surcharge d'allocation de variables locales et d'objets : un grand nombre de créations et de destructions de variables locales ou d'objets peuvent entraîner un débordement de pile et une dégradation des performances.

Comment optimiser les performances des programmes multi-thread en C++ ? Comment optimiser les performances des programmes multi-thread en C++ ? Jun 05, 2024 pm 02:04 PM

Les techniques efficaces pour optimiser les performances multithread C++ incluent la limitation du nombre de threads pour éviter les conflits de ressources. Utilisez des verrous mutex légers pour réduire les conflits. Optimisez la portée du verrou et minimisez le temps d’attente. Utilisez des structures de données sans verrouillage pour améliorer la simultanéité. Évitez les attentes occupées et informez les threads de la disponibilité des ressources via des événements.

Quelles sont les considérations en matière de performances pour les fonctions statiques C++ ? Quelles sont les considérations en matière de performances pour les fonctions statiques C++ ? Apr 16, 2024 am 10:51 AM

Les considérations sur les performances des fonctions statiques sont les suivantes : Taille du code : les fonctions statiques sont généralement plus petites car elles ne contiennent pas de variables membres. Occupation mémoire : n’appartient à aucun objet spécifique et n’occupe pas la mémoire objet. Frais généraux d’appel : inférieurs, pas besoin d’appeler via un pointeur d’objet ou une référence. Multi-thread-safe : généralement thread-safe car il n'y a aucune dépendance vis-à-vis des instances de classe.

Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Apr 21, 2024 am 09:39 AM

Les paramètres de référence dans les fonctions C++ (essentiellement les alias de variable, la modification de la référence modifie la variable d'origine) et les paramètres de pointeur (stockage de l'adresse mémoire de la variable d'origine, modification de la variable en déréférençant le pointeur) ont des utilisations différentes lors du passage et de la modification de variables. Les paramètres de référence sont souvent utilisés pour modifier les variables d'origine (en particulier les grandes structures) afin d'éviter une surcharge de copie lorsqu'elles sont transmises aux constructeurs ou aux opérateurs d'affectation. Les paramètres de pointeur sont utilisés pour pointer de manière flexible vers des emplacements de mémoire, implémenter des structures de données dynamiques ou transmettre des pointeurs nuls pour représenter des paramètres facultatifs.

See all articles