mysql实现计数器
本文转自:https://blog.csdn.net/stevendbaguo/article/details/70889449
如果是在非常高的并发之下,还是建议用内存数据库redis去实现计数的功能。如果不是那么高的并发,用表实现就可以。
DROP TABLE access_counter;
CREATE TABLE access_counter(
cnt INT UNSIGNED NOT NULL
);
INSERT INTO access_counter VALUES(0);
UPDATE access_counter SET cnt=cnt+1;
SELECT * FROM access_counter;
--上面的方法在高并发性上有问题,会产生大量的锁
DROP TABLE access_counter;
CREATE TABLE access_counter(
solt INT NOT NULL PRIMARY KEY,
cnt INT NOT NULL
);
DELIMITER $
DROP PROCEDURE IF EXISTS `proc1`$
CREATE PROCEDURE `proc1`()
BEGIN
DECLARE i INT;
SET i=0;
WHILE i<100 DO
INSERT INTO access_counter VALUES(i,0);
SET i=i+1;
END WHILE;
END$
DELIMITER ;
CALL proc1();
SELECT * FROM access_counter;
--这样就随机选择一个solt进行更新
--RAND()函数调用可以在0和1之间产生一个随机数
UPDATE access_counter SET cnt=cnt+1 WHERE solt=FLOOR(RAND()*100);
--如果每隔一天开始一个新的计数器,那方法是:
DROP TABLE access_counter;
CREATE TABLE access_counter(
access_day DATE NOT NULL,
solt INT NOT NULL,
cnt INT NOT NULL,
PRIMARY KEY(access_day,solt)
);
--DUPLICATE KEY UPDATE 跟Oracle的merge INTO 类似
INSERT INTO access_counter(access_day,solt,cnt)
VALUES(CURRENT_DATE,FLOOR(RAND()*100),1)
ON DUPLICATE KEY UPDATE cnt=cnt+1;
--如果不想有太多数据,那就每天删一次
UPDATE access_counter AS a INNER JOIN
(SELECT access_day,SUM(cnt) AS cnt,MIN(solt) AS msolt FROM access_counter
GROUP BY access_day) AS b
USING (access_day)
SET a.cnt = IF(a.`solt`= b.msolt,b.cnt,0),
a.solt = IF(a.`solt`= b.msolt,0,a.`solt`);
DELETE FROM access_counter WHERE solt<>0 AND cnt=0;
mysql实现计数器的更多相关文章
- mysql 写计数器需要注意的问题
MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能 由于并发的时候 不能同时写入一行数据 所以要分开写<pre>先创建表CREATE TABLE `article_view` ...
- LR通过SiteScope监控mysql
SiteScope下载,安装 要想使用LoadRunner监测MySQL数据库的性能,LoadRunner没有提供直接监测 MySQL的功能,所以,我们需要借助sitescope监控,然后在LoadR ...
- Loadrunner通过sitescope监控mysql
1. Loadrunner通过sitescope监控mysql 1.1. Sitescope下载 第一次在网上下载的是sitescope11.30,安装之后无法破解,所以最后卸载了,重新下载了si ...
- LR如何利用siteScope监控MySQL性能
本次实验,是在自己的电脑上使用APMServ5.2.6部署Discuz2.X论坛下,对该论坛的数据库MySQL5.1进行性能测试的,下面讲述LoadRunner在设计场景时,如何利用siteScope ...
- mysql基础测试
mysql基础测试 测试原因 为什么需要做性能测试 模拟比当前系统更高的负载,找出性能瓶颈 重现线上异常 测试不同硬件软件配置 规划未来的业务增长 测试分类 性能测试的分类 设备层的测试 ...
- 11-MySQL DBA笔记-MySQL的监控
第11章 MySQL的监控 为什么我们需要监控呢?因为如果没有了监控,那么我们的服务可用性就无从度量,我们也无法及时地发现问题和处理问题.一个完善的监控体系,不仅需要进行实时的监控,也需要分析历史的监 ...
- 分布式锁(redis/mysql)
单台机器所能承载的量是有限的,用户的量级上万,基本上服务都会做分布式集群部署.很多时候,会遇到对同一资源的方法.这时候就需要锁,如果是单机版的,可以利用java等语言自带的并发同步处理.如果是多台机器 ...
- CactiEZ命令行添加主机监控参考
1.添加主机 php -q add_device.php --description= --community="public" 查询主机模板: php -q add_device ...
- loadrunner实战篇 - 客户关系管理系统性能测试
系统介绍 图1(客户关系管理系统模块关系图) 需求分析 一.性能指标 性能指标分 ...
随机推荐
- webpack 小demo
1 安装node.js 2 安装cnpm 3 安装webpack cnpm install --save-dev webpack 对于大多数项目,我们建议本地安装.这可以使我们在引入破坏式变更的依赖时 ...
- 二、myeclipse中配置mybatis中xml的自动提示
以mybatis中mapper.xml为例 方法一: 步骤一:在mybatis-3.3.0.jar包中寻找mybatis-3-mapper.dtd文件. 可以用360压缩打开mybatis-3.3.0 ...
- Java--常识
一:J2SE/J2ME/J2EE Java2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本.J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvir ...
- 再谈使用X.PagedList.Mvc 分页(ASP.NET Core 2.1)
在以前的博文中写过使用X.PagedList.Mvc组件来对ASP.NET MVC应用程序进行分页,可以参考此篇随笔:Asp.net MVC 使用PagedList(新的已更名 为X.PagedLis ...
- HDFS源码分析二-NameNode实现
2. NameNode 实现( 未完待续 )
- TypeScript完全解读(26课时)_6.TypeScript完全解读-泛型
6.TypeScript完全解读-泛型 创建实例ts文件generics.ts 在index.ts内引入 fill是填充数组,创建的数组的元素数是times,填充的值就是接收的value的值 这里传入 ...
- 51nod 1413
思路: 直接在串里找个最大的值就好了: #include <cstdio> #include <cstring> #include <cstdlib> #inclu ...
- Android studio改包名
http://www.cnblogs.com/Kyouhui/p/4632813.html Android Studio,咱们开发安卓的利器,自推出就受到移动开发者的追捧,但一路走来,大家谈到他,充满 ...
- Pro Android学习笔记(一五四):传感器(4):陀螺仪、加速传感器
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei. 陀螺仪 陀螺仪(Gyr ...
- euler证明
我们用g(x)表示x的欧拉函数值,即1~x与x互质的数的个数 欧拉函数公式为: g(x)= y*((x1-1)/x1)*((x2-1)/x2)*((x3-1)/x3)....(其中x1, x2, x3 ...