mysql table_cache设置,MySQL性能优化之table_cache配置参数浅析

table_cache是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。

缓存机制

当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。

在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。

参数调优

一般来说,可以在phpmyadmin中查看Open_tables与Opened_tables的值,也可以执行

代码如下:

mysql> show global status like 'open%_tables';

查看当前的open_tables情况,如图:

来查看这两个参数的值。其中Open_tables是当前正在打开表的数量,Opened_tables是所有已经打开表的数量。

如果Open_tables的值已经接近table_cache的值,且Opened_tables还在不断变大,则说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加大table_cache的值。对于大多数情况,

比较适合的值:

代码如下:

Open_tables / Opened_tables >= 0.85

Open_tables / table_cache flush tables;

命令将会清空当前所有缓存的表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu上设置MySQL的lower_case_table_names参数无效可能是由于以下几个原因: 1. 参数设置错误:请确保在MySQL配置文件中正确设置了lower_case_table_names参数。可以通过编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件来修改参数值。确保在[mysqld]部分添加或修改lower_case_table_names = 1,并重新启动MySQL服务。 2. 配置文件位置错误:在某些情况下,MySQL配置文件可能位于不同的位置。可以通过运行以下命令来查找配置文件的位置:sudo find / -name "my.cnf"。然后在找到的配置文件中进行相应的修改。 3. 参数冲突:如果在MySQL配置文件中同时设置了lower_case_table_names参数和其他与大小写相关的参数(如lower_case_file_system),可能会导致参数无效。请确保只设置lower_case_table_names参数,并将其他相关参数注释掉或删除。 4. 参数生效范围:lower_case_table_names参数只对新创建的表有效,对于已存在的表可能不会生效。如果需要将已存在的表名转换为小写,可以使用RENAME TABLE语句进行修改。 5. 数据库引擎限制:某些数据库引擎(如InnoDB)可能对lower_case_table_names参数有限制。请确保使用的数据库引擎支持该参数,并且已正确配置。 如果以上方法都无效,您可以尝试重新安装MySQL,并在安装过程中正确设置lower_case_table_names参数。另外,您还可以查看MySQL的错误日志文件(通常位于/var/log/mysql/error.log),以获取更多关于参数设置无效的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值