楼主: ggg3838

继续帮忙:session 2能用上缓存吗

[复制链接]
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
11#
发表于 2013-7-31 10:48 | 只看该作者
ggg3838 发表于 2013-7-31 11:39
噢,我的buffer设置太小了

具体是哪个buffer设置太小了?  楼主可以share下给大家!

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
12#
发表于 2013-7-31 10:50 | 只看该作者
ggg3838 发表于 2013-7-31 11:39
噢,我的buffer设置太小了

什么buffer参数设置太小了, mysql的buffer参数有好多个,你的具体是哪个?

使用道具 举报

回复
招聘 : .Net研发
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:13
13#
 楼主| 发表于 2013-7-31 11:06 | 只看该作者
mchdba 发表于 2013-7-31 10:50
什么buffer参数设置太小了, mysql的buffer参数有好多个,你的具体是哪个?

innodb_buffer_pool_size 这个 当时是8M
第一次执行 select count(*) from test01 a
第二次执行 select count(*) from test01 b 区别就是个b --这样不能利用到缓存
调整innodb_buffer_pool_size 这个 当时是1G
第一次执行 select count(*) from test01 a
第二次执行 select count(*) from test01 b 区别就是个b --这样可以利用到缓存
不清楚为什么

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
14#
发表于 2013-7-31 18:29 | 只看该作者
ggg3838 发表于 2013-7-31 12:06
innodb_buffer_pool_size 这个 当时是8M
第一次执行 select count(*) from test01 a
第二次执行 selec ...


mysql> select count(*) from billing.invoice a;
+----------+
| count(*) |
+----------+
|  2457712 |
+----------+
1 row in set (4.18 sec)
mysql> exit
Bye
[root@eanshlt2mydbc001db002 5.5.25a]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4459094
Server version: 5.5.25a-log MySQL EA Release
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select count(*) from billing.invoice b;
+----------+
| count(*) |
+----------+
|  2457712 |
+----------+
1 row in set (0.68 sec)
mysql>

我做了测试可以用到缓存,估计是你的buffer设置太小的缘故,没有办法缓存数据集合。

使用道具 举报

回复
招聘 : .Net研发
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:13
15#
 楼主| 发表于 2013-7-31 19:30 | 只看该作者
mchdba 发表于 2013-7-31 18:29
mysql> select count(*) from billing.invoice a;
+----------+
| count(*) |

但很奇怪,如果都是select count(*) from test01 a 就可以

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
16#
发表于 2013-7-31 22:04 | 只看该作者
ggg3838 发表于 2013-7-31 20:30
但很奇怪,如果都是select count(*) from test01 a 就可以

贴一下你的操作记录,大家看看!

使用道具 举报

回复
论坛徽章:
11
鲜花蛋
日期:2011-09-03 18:52:38鲜花蛋
日期:2011-11-09 10:10:12茶鸡蛋
日期:2011-11-19 22:46:41茶鸡蛋
日期:2011-12-14 15:16:572012新春纪念徽章
日期:2012-01-04 11:57:56奥运会纪念徽章:赛艇
日期:2012-09-26 21:40:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2013-7-31 22:50 | 只看该作者
两条语句相隔不久的话一般来说是可以利用缓存的。 如果相隔时间较长可能会由于一些页的LRU替换导致无法利用缓存。

使用道具 举报

回复
招聘 : .Net研发
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:13
18#
 楼主| 发表于 2013-7-31 22:50 | 只看该作者
mchdba 发表于 2013-7-31 22:04
贴一下你的操作记录,大家看看!

mysql> set profiling=1;
Query OK, 0 rows affected (0.03 sec)

mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from test01 a;
+----------+
| count(*) |
+----------+
|  7516795 |
+----------+
1 row in set (29.72 sec)

mysql> select count(*) from test01 a;
+----------+
| count(*) |
+----------+
|  7516795 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from test01 b;
+----------+
| count(*) |
+----------+
|  7516795 |
+----------+
1 row in set (30.45 sec)

mysql> show profiles;
+----------+-------------+-------------------------------+
| Query_ID | Duration    | Query                         |
+----------+-------------+-------------------------------+
|        1 |  0.00033800 | flush tables                  |
|        2 | 29.72485675 | select count(*) from test01 a |
|        3 |  0.00017100 | select count(*) from test01 a |
|        4 | 30.44960775 | select count(*) from test01 b |
+----------+-------------+-------------------------------+
4 rows in set (0.02 sec)

mysql> show profile cpu,block io for query 2;
+--------------------------------+-----------+----------+------------+--------------+---------------+
| Status                         | Duration  | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+-----------+----------+------------+--------------+---------------+
| starting                       |  0.000118 |     NULL |       NULL |         NULL |          NULL |
| checking query cache for query |  0.000055 |     NULL |       NULL |         NULL |          NULL |
| Opening tables                 |  0.000463 |     NULL |       NULL |         NULL |          NULL |
| System lock                    |  0.000004 |     NULL |       NULL |         NULL |          NULL |
| Table lock                     |  0.000029 |     NULL |       NULL |         NULL |          NULL |
| init                           |  0.000013 |     NULL |       NULL |         NULL |          NULL |
| optimizing                     |  0.000004 |     NULL |       NULL |         NULL |          NULL |
| statistics                     |  0.000013 |     NULL |       NULL |         NULL |          NULL |
| preparing                      |  0.000007 |     NULL |       NULL |         NULL |          NULL |
| executing                      |  0.000005 |     NULL |       NULL |         NULL |          NULL |
| Sending data                   | 29.722949 |     NULL |       NULL |         NULL |          NULL |
| end                            |  0.000010 |     NULL |       NULL |         NULL |          NULL |
| query end                      |  0.000006 |     NULL |       NULL |         NULL |          NULL |
| freeing items                  |  0.000848 |     NULL |       NULL |         NULL |          NULL |
| storing result in query cache  |  0.000017 |     NULL |       NULL |         NULL |          NULL |
| logging slow query             |  0.000003 |     NULL |       NULL |         NULL |          NULL |
| logging slow query             |  0.000310 |     NULL |       NULL |         NULL |          NULL |
| cleaning up                    |  0.000006 |     NULL |       NULL |         NULL |          NULL |
+--------------------------------+-----------+----------+------------+--------------+---------------+
18 rows in set (0.06 sec)

mysql> show profile cpu,block io for query 3;
+--------------------------------+----------+----------+------------+--------------+---------------+
| Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting                       | 0.000107 |     NULL |       NULL |         NULL |          NULL |
| checking query cache for query | 0.000008 |     NULL |       NULL |         NULL |          NULL |
| checking privileges on cached  | 0.000013 |     NULL |       NULL |         NULL |          NULL |
| sending cached result to clien | 0.000038 |     NULL |       NULL |         NULL |          NULL |
| logging slow query             | 0.000004 |     NULL |       NULL |         NULL |          NULL |
| cleaning up                    | 0.000002 |     NULL |       NULL |         NULL |          NULL |
+--------------------------------+----------+----------+------------+--------------+---------------+
6 rows in set (0.00 sec)

mysql> show profile cpu,block io for query 4;
+--------------------------------+-----------+----------+------------+--------------+---------------+
| Status                         | Duration  | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+-----------+----------+------------+--------------+---------------+
| starting                       |  0.000211 |     NULL |       NULL |         NULL |          NULL |
| checking query cache for query |  0.000118 |     NULL |       NULL |         NULL |          NULL |
| Opening tables                 |  0.000040 |     NULL |       NULL |         NULL |          NULL |
| System lock                    |  0.000009 |     NULL |       NULL |         NULL |          NULL |
| Table lock                     |  0.000092 |     NULL |       NULL |         NULL |          NULL |
| init                           |  0.000031 |     NULL |       NULL |         NULL |          NULL |
| optimizing                     |  0.000010 |     NULL |       NULL |         NULL |          NULL |
| statistics                     |  0.000025 |     NULL |       NULL |         NULL |          NULL |
| preparing                      |  0.000020 |     NULL |       NULL |         NULL |          NULL |
| executing                      |  0.000019 |     NULL |       NULL |         NULL |          NULL |
| Sending data                   | 30.430485 |     NULL |       NULL |         NULL |          NULL |
| end                            |  0.000012 |     NULL |       NULL |         NULL |          NULL |
| query end                      |  0.000006 |     NULL |       NULL |         NULL |          NULL |
| freeing items                  |  0.018385 |     NULL |       NULL |         NULL |          NULL |
| storing result in query cache  |  0.000013 |     NULL |       NULL |         NULL |          NULL |
| logging slow query             |  0.000003 |     NULL |       NULL |         NULL |          NULL |
| logging slow query             |  0.000125 |     NULL |       NULL |         NULL |          NULL |
| cleaning up                    |  0.000004 |     NULL |       NULL |         NULL |          NULL |
+--------------------------------+-----------+----------+------------+--------------+---------------+
18 rows in set (0.00 sec)


使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
19#
发表于 2013-7-31 23:00 | 只看该作者
ggg3838 发表于 2013-7-31 23:50
mysql> set profiling=1;
Query OK, 0 rows affected (0.03 sec)

谢谢分享,我看到了,因为sql语句不一样,所以cache层不能直接去取原来的统计记录,需要重新遍历data file,重新进行统计.

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
20#
发表于 2013-7-31 23:02 | 只看该作者
mysql> select count(*) from billing.invoice b;
+----------+
| count(*) |
+----------+
|  2457712 |
+----------+
1 row in set (0.68 sec)
mysql>

我的测试结果里面,这里用了0.68 sec 而不是0.00,其实也去遍历了一部分data file的数据进行统计.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表