mysql 分类计数器,MYSQL计数器类型业务的优化
create table kp_hit_counter ( cnt int unsigned not null) engine=innodb;create table kp_hit_counter2 ( id int unsigned not null primary key, cnt int unsigned not null) engine=innodb;创建表工具:http_load1000次请求,并发:1041 fetches, 1020 max parallel, bytes, in 10.0008 seconds# 一共请求连接41次,最大并发线程1020个,持续10.0008秒内,总传输速率为 bytes 20778 mean bytes/connection#每次请求连接平均数据量(÷41)4.09969 fetches/sec, 85183.3 bytes/sec#每秒的响应请求连接数为4.09969个,每秒传输的数据为85183.3btyes/毫秒msecs/connect: 264.607 mean, 269.482 max, 262.187 min#每次连接平均响应时间:264.607毫秒,最大时间:269.482毫秒,最小时间:262.187毫秒msecs/first-response: 1949.27 mean, 5394.21 max, 380.501 min#每次连接平均返回时间:1949.27毫秒,最大时间:5394.21毫秒,最小时间:380.501毫秒HTTP response codes:
code 200 -- 41#HTTP返回码:200 ,一共41次。模拟环境第一种方案:update kp_hit_counter set cnt = cnt+1;第一种结果:
第二种方案:
建立多行,随机计数后求和,提高并发处理能力:
update kp_hit_counter2 set cnt = cnt+1 where id = RAND() * 100这是原书作者给出的例子,并没任何作用
这是网上查的取随机数改的
update kp_hit_counter2 set cnt = cnt+1 where id = round(RAND() * 100);
以上写法有坑,你会发现计数会小于1000,甚至是1000,还好我测试了。
rand是0-1的浮点数,以上写法可能出现0,导致计数失败,后来又改良成以下还是不行:
update kp_hit_counter2 set cnt = cnt+1 where id = (round(RAND() * 99)+1); 所以取随机数我交给PHP去做再也没出现计数错误了,本身也应该这么做:
mysql 分类计数器,MYSQL计数器类型业务的优化相关推荐
- php mysql 分类_php+mysql实现无限分类实例详解
本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...
- redis mysql 原子计数器_redission计数器实现,redisTemplate计数器
在redission 2.9.0版本之前是有BUG,在实现下面代码时,第一次是成功的,但是在第二次就会失败: RedissonClient client;//client参考别的demo RMapCa ...
- MySQL日期数据类型、时间类型使用总结
转载链接:http://www.jb51.net/article/23966.htm MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ----- ...
- ( 4 )MySQL中的数据类型(字符串类型)
MySQL中的数据类型(字符串类型) 字符长类型 六中数据库中的数据类型 char , varchar , text ,blob,enum,set char和varchar char定长:磁盘空间比较 ...
- 数据存取演变史、数据库软件应用史、数据库的本质、分类、 MySQL数据库、系统服务制作、基本的SQL语句
数据存取演变史 1.文本文件 文本文件有两个主要的缺点:第一个就是不能保证多用户存取的文件路径一致:第二个就是不能保证多用户存取的数据格式一致 2.软件开发目录规范 软件开发目录规范规定了数据文件的大 ...
- mysql中存储指纹数据_业务数据指纹(MD5)的使用和存储注意
md5 开始 有时由于存储优化或实现业务要求,或数据引用.去重要求.需要对业务数据计算和存储指纹信息. 以下分析几方面. 1.指纹算法选择 2.指纹输入的数据选择 3.指纹储存方法 指纹算法选择 理论 ...
- mysql请输入一个有效类型的长度值_MySQL数据库基础(三)——SQL语言
MySQL数据库基础(三)--SQL语言 发布时间:2020-05-19 16:40:05 来源:51CTO 阅读:10596 作者:天山老妖S MySQL数据库基础(三)--SQL语言 一.SQL语 ...
- MySQL索引系列--索引的类型
原文网址:MySQL索引系列--索引的类型_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL的索引的类别. 按索引列的类型分类 普通索引.主键索引.唯一索引.外键索引.全文索引.联合索引. ...
- mysql 不同分区 同时insert_一文看懂mysql数据库分区表概念、类型、适用场景、优缺点及原理...
概述 最近对项目上部分表按时间做了分区,所以顺便整理下mysql分区表的一些内容,仅供参考. 一.分区表概念 分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分, ...
最新文章
- 2021年大数据ELK(二十四):安装Kibana
- C++应用程序性能优化
- “中国GPT-3”开放APP开发接口,百万奖金智能应用开发大赛同步启动
- 一维信号双边滤波器_定义图上的各向异性、动态、频谱和多尺度滤波器
- ExecutorService——shutdown方法和awaitTermination方法
- 与Maven和Docker的集成测试
- 三层嵌套gridview 的折叠展开
- 缠中说禅电子书_缠中说禅作者的可怕之处
- C程序设计--排序(冒泡、选择、插入)--冒泡
- OpenStack安装CentOS镜像:Device eth0 does not seem to be present, delaying initialization
- 用混淆矩阵计算kappa系数
- 云更新网吧系统服务器,云更新网吧无盘
- 均匀分布、正态分布、二项分布、泊松分布、指数分布
- fatal: detected dubious ownership in repository at ‘D:/‘之解决方法
- 软件开发过程与项目管理(16.项目结束)
- python中stripped string_22-.strings 和 stripped_strings变量多个文本
- AS608指纹模块于51单片机的二次开发
- 关于left / right / stereo / mono
- UNIX的spctl命令
- POJ3255(次最短路)
热门文章
- HDU 1576 A/B(数论简单题,求逆元)
- 锐捷交换机 查看端口流量信息
- 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
- 请检查captcha表格_【分享】工程资料这样写,再也不用担心检查组来检查资料了...
- java web 的map_javaweb开发过程中小工具系列之将Map转换成对象
- 用计算机字符写名字,NSIS:把计算机名转换为大写或小写字符
- c语言计算结果为1. inf0000,C语言复习题及答案老师给的
- C++析构函数为什么要为虚函数?
- 剑指offer面试题[9-3]-矩形覆盖
- Loadrunner 第一个场景设计Controller