影响Mysql性能的重要参数详解_MySQL
查看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,表示支持。
热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Ollama是一款超级实用的工具,让你能够在本地轻松运行Llama2、Mistral、Gemma等开源模型。本文我将介绍如何使用Ollama实现对文本的向量化处理。如果你本地还没有安装Ollama,可以阅读这篇文章。本文我们将使用nomic-embed-text[2]模型。它是一种文本编码器,在短的上下文和长的上下文任务上,性能超越了OpenAItext-embedding-ada-002和text-embedding-3-small。启动nomic-embed-text服务当你已经成功安装好o

不同Java框架的性能对比:RESTAPI请求处理:Vert.x最佳,请求速率达SpringBoot2倍,Dropwizard3倍。数据库查询:SpringBoot的HibernateORM优于Vert.x及Dropwizard的ORM。缓存操作:Vert.x的Hazelcast客户机优于SpringBoot及Dropwizard的缓存机制。合适框架:根据应用需求选择,Vert.x适用于高性能Web服务,SpringBoot适用于数据密集型应用,Dropwizard适用于微服务架构。

C++参数类型安全检查通过编译时检查、运行时检查和静态断言确保函数只接受预期类型的值,防止意外行为和程序崩溃:编译时类型检查:编译器检查类型相容性。运行时类型检查:使用dynamic_cast检查类型相容性,不匹配则抛出异常。静态断言:在编译时对类型条件进行断言。

PHP数组键值翻转方法性能对比表明:array_flip()函数在大型数组(超过100万个元素)下比for循环性能更优,耗时更短。手动翻转键值的for循环方法耗时相对较长。

函数对C++程序性能的影响包括函数调用开销、局部变量和对象分配开销:函数调用开销:包括堆栈帧分配、参数传递和控制权转移,对小函数影响显着。局部变量和对象分配开销:大量局部变量或对象创建和销毁会导致堆栈溢出和性能下降。

优化C++多线程性能的有效技术包括:限制线程数量,避免争用资源。使用轻量级互斥锁,减少争用。优化锁的范围,最小化等待时间。采用无锁数据结构,提高并发性。避免忙等,通过事件通知线程资源可用性。

静态函数性能考虑如下:代码大小:静态函数通常更小,因为不包含成员变量。内存占用:不属于任何特定对象,不占用对象内存。调用开销:更低,无需通过对象指针或引用调用。多线程安全:通常线程安全,因为不依赖于类实例。

不同PHP函数的性能对应用程序效率至关重要。性能较好的函数包括echo、print,而str_replace、array_merge、file_get_contents等函数性能较慢。例如,str_replace函数用于替换字符串,性能中等,而sprintf函数用于格式化字符串。性能分析表明,执行一个示例仅需0.05毫秒,证明了函数性能良好。因此,明智地使用函数可以构建更快、更高效的应用程序。
