做EnableCaching
财产的是什么?我无法在official documentation中找到有关此属性的任何文档。
MySqlCommand command = new MySqlCommand();
command.Connection = connection;
command.CommandType = CommandType.Text;
command.EnableCaching = [true | false];
// other codes...
任何有用的来源,评论,回答赞赏。非常感谢。
答案 0 :(得分:1)
TLDR:根据需要使用它,但需要进行大量的客户端和服务器端调整才能掌握所需的结果。
摘自Mysql手册页Query Cache Configuration:
设置GLOBAL query_cache_type值可确定查询缓存 进行更改后连接的所有客户端的行为。 各个客户端可以控制自己连接的缓存行为 通过设置SESSION query_cache_type值。例如,客户 可以禁用查询缓存用于自己的查询,如下所示:
mysql> SET SESSION query_cache_type = OFF;
当然,上述内容适用于命令行实用程序,但并不是说手册的概念介绍知道您使用的是哪个连接器(Java,.NET等)。这就是它运行的那个。 您的 连接器将.NET command.EnableCaching
传递给mysql连接query_cache_type
。这是在逐个连接的基础上,它决定了你是否希望你的结果由缓存服务,假设它们甚至被缓存。即使提出这个问题也是一个非常广泛的问题。
我试图尽可能缩小这个答案。你应该什么时候使用它?这取决于您的应用程序和您。根据您的特定测试尝试是否被缓存,它将根据具体情况而有所不同。
有几点需要注意,例如大小设置以及是否启用了缓存。此外,mysql守护程序是否具有发送给它的缓存的adhoc运行时设置以及在服务器重新启动时使用这些设置可以存活的内容。所以这不是一个简单的答案。
为此,我找到了一篇很好的" 第二篇"补充或超过上述参考文献中的那个。后者确实提供服务器信息。
第二条是Speed Up Your Web Site With MySQL Query Caching。我把它全部包括在内,因为经过半小时的搜索,它似乎是最好的信息,我希望它不会消失。
加速Web应用程序的最佳方法之一是启用 数据库中的查询缓存,缓存常用的SQL查询 在内存中,用于下一页的几乎即时访问 同样的要求。
这种方法如此强大的原因是你不必制作 对您的Web应用程序进行任何更改,您只需要牺牲一个 一点点记忆。这不会解决你所有的问题, 但它肯定不会受到伤害。
注意:如果您的应用程序经常更新表,那么查询 缓存将不断清除,你不会得到太多或任何好处 由此。这对于主要执行读取的应用程序来说非常理想 针对数据库,例如WordPress博客。这也行不通 如果你在共享主机上运行。
启用服务器运行时的缓存
您要做的第一件事就是确保您的安装 MySQL实际上有可用的查询缓存支持。最 分配确实如此,但无论如何你应该检查。
您需要从MySQL控制台运行此命令 告诉您查询缓存是否可用。
mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+
不要误以为这意味着实际启用了查询缓存, 因为大多数托管服务提供商不是 默认情况下启用此功能。奇怪的是,我的Ubuntu Feisty 安装已启用它......
接下来,我们需要检查并查看是否启用了查询缓存。好 需要检查多个变量,所以我们也可以这样做 一旦检查变量
query%
mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
这是列表中的重要项目及其含义:
query_cache_size - 这是缓存的大小(以字节为单位)。设置 此值为0将有效禁用缓存。
query_cache_type - 默认情况下,此值必须为ON或1才能启用查询缓存。
query_cache_limit - 这是查询的最大大小(以字节为单位) 将被缓存。
如果query_cache_size值设置为0或您只是 想要改变它,你需要运行以下命令,保持 请记住,该值以字节为单位。例如,如果你想 分配8MB到缓存我们使用1024 * 1024 * 8 = 8388608作为 值。
SET GLOBAL query_cache_size = 8388608;
同样,其他选项可以使用相同的语法设置:
SET GLOBAL query_cache_limit = 1048576; SET GLOBAL query_cache_type = 1;
现在我们如何判断它是否真的有效?你可以使用
SHOW STATUS
命令拉出所有以“Qc”开头的变量来查看 在幕后发生的事情。mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | +-------------------------+--------+ 8 rows in set (0.00 sec)
你会在统计数据中注意到我有足够的空闲记忆。如果你的 服务器显示了很多lowmem梅子,你可能需要考虑 增加这个值,但我不会在查询上花费太多内存 缓存Web服务器...您需要保留内存 apache,php,ruby,或者你正在使用的任何东西。
在配置文件中启用
如果您希望这些更改能够在重新启动或重新启动mysql后继续存在 服务器,您需要将它们添加到
/etc/mysql/my.cnf
MySQL的配置文件。请注意,它可能会有所不同 安装位置。在sudo或root模式下使用文本编辑器打开文件,然后 如果文件中尚不存在这些值,请添加这些值。如果他们这样做 存在,只是取消它们。
query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576
查询缓存可以显着改善 Web应用程序的速度,尤其是应用程序的速度 大多是读。使用上述方法监控状态,看看如何 它随着时间的推移而发挥作用。