MySQL 优化器计算 常数
MySQL version:8.0.18-commercial MySQL Enterprise Server
现有CBO的消耗的计算是根据一些常用数字来计算出结果的,如以下两张表engine_cost 和 server_cost
mysql> select * from mysql.engine_cost;
+-------------+-------------+------------------------+------------+---------------------+---------+---------------+
| engine_name | device_type | cost_name | cost_value | last_update | comment | default_value |
+-------------+-------------+------------------------+------------+---------------------+---------+---------------+
| default | 0 | io_block_read_cost | NULL | 2020-01-03 10:20:15 | NULL | 1 |
| default | 0 | memory_block_read_cost | NULL | 2020-01-03 10:20:15 | NULL | 0.25 |
+-------------+-------------+------------------------+------------+---------------------+---------+---------------+
2 rows in set (0.00 sec)
mysql> select * from mysql.server_cost ;
+------------------------------+------------+---------------------+---------+---------------+
| cost_name | cost_value | last_update | comment | default_value |
+------------------------------+------------+---------------------+---------+---------------+
| disk_temptable_create_cost | NULL | 2020-01-03 10:20:15 | NULL | 20 |
| disk_temptable_row_cost | NULL | 2020-01-03 10:20:15 | NULL | 0.5 |
| key_compare_cost | NULL | 2020-01-03 10:20:15 | NULL | 0.05 |
| memory_temptable_create_cost | NULL | 2020-01-03 10:20:15 | NULL | 1 |
| memory_temptable_row_cost | NULL | 2020-01-03 10:20:15 | NULL | 0.1 |
| row_evaluate_cost | NULL | 2020-01-03 10:20:15 | NULL | 0.1 |
+------------------------------+------------+---------------------+---------+---------------+
6 rows in set (0.00 sec)
其中修改方式 和 增加计算数字的方式
UPDATE mysql.engine_cost
SET cost_value = 2.0
WHERE cost_name = 'io_block_read_cost';
FLUSH OPTIMIZER_COSTS;
INSERT INTO mysql.engine_cost
VALUES ('InnoDB', 0, 'io_block_read_cost', 3.0,
CURRENT_TIMESTAMP, 'Using a slower disk for InnoDB');
FLUSH OPTIMIZER_COSTS;
执行 FLUSH 就是为了告诉服务器,重新读取消耗计算的表。否则不生效
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能