table_open_cache
2024-10-15 00:40:37
当 MySQL 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存;如果还没有被缓存,但是在MySQL表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区;如果表缓存满了,则会按照一定的规则将当前未用的表释放,或者临时扩大表缓存来存放,使用表缓存的好处是可以更快速地访问表中的内容。
执行 flush tables 会清空缓存的内容。一般来说,可以通过查看数据库运行峰值时间的状态值 Open_tables 和 Opened_tables ,判断是否需要增加 table_cache 的值(其中 open_tables 是当前打开的表的数量, Opened_tables 则是已经打开的表的数量)。即如果open_tables接近table_cache的时候,并且Opened_tables这个值在逐步增加,那就要考虑增加这个值的大小了。还有就是Table_locks_waited比较高的时候,也需要增加table_cache。
在mysql默认安装情况下,table_cache的值在2G内存以下的机器中的值默认时256到 512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对 SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。
最新文章
- GO 基础(一)
- hibernate整合spring事务异常
- hybird之web动态换肤实现
- 获取其它进程窗口中的状态栏信息(FindWindowEx GetWindowThreadProcessId OpenProcess SendMessage轮番轰炸)
- Entity Framework学习(一)
- 执行mysql脚本
- C++里面的取整函数
- 利用redis List队列简单实现秒杀 PHP代码实现
- cf 20190307 Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)
- 【转载】SQL中inner join、outer join和cross join的区别
- log4net 开启内部调试
- js对象与字符串的想到转换
- Python day 4
- Jenkins Jfrog Artifactory 以及docker下的pipeline 容器编排实践
- python基础之循环语句,格式化输出以及编码
- 牛客OI赛制测试赛3游记
- Linux查看GPU使用情况
- qt 零星笔记
- 虚拟机重启网络服务失败,当查看状态显示错误Failed to start LSB......
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
热门文章
- POJ 3277 City Horizon(叶子节点为[a,a+1)的线段树+离散化)
- POJ 2499 Binary Tree(二叉树,找规律)
- 【QT】计时器制作
- linux入门教程(七) linux系统用户以及用户组管理
- Floodlight 防火墙是如何起作用的
- 初识Redis
- java:异常处理
- 向ArcMap添加未出现的工具 如planarize lines
- Excel操作--使用NPOI导入导出Excel为DataTable
- 模拟在table中移动鼠标,高亮显示鼠标所在行