MySQL实现计数器的表设计及实现
来源:互联网 发布:世界各国城市数据库 编辑:程序博客网 时间:2024/06/05 06:20
如果是在非常高的并发之下,还是建议用内存数据库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;
0 0
- MySQL实现计数器的表设计及实现
- Mysql计数器表设计
- 计数器的实现
- 实现计数器
- HashMap计数器的高效实现
- Java实现的高效计数器
- php实现简单的计数器
- jquery实现的网页计数器
- CountView类似计数器的实现
- 网站计数器表的设计
- 界面的设计及实现
- 朋友圈的设计及实现。
- 实现站点计数器的用户控件
- FPGA verilog 实现的1602 时钟计数器
- LPC1788实现10ms单位的计数器
- php图形数字计数器的实现
- 使用CAS实现的非阻塞计数器
- PHP实现简单的图片计数器
- DOM性能优化 那些年踩过的坑
- CodeForces 645 B.Mischievous Mess Makers(水~)
- NULL和唯一约束UNIQUE的对应关系
- 容器日志处理及实现
- ul,ol,dl的区别
- MySQL实现计数器的表设计及实现
- 炫丽的Dialog弹框
- CSMA/CD
- InetAddress类的getByName()方法
- Android进阶之路
- [ML]ML中的概率知识总结
- 【转】mac版 Intellij IDEA 弹窗报 this license XXXXXXXX has been cancelled
- js中onload和jQuery中ready的区别
- 挂茶馆VIP问道教程