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计数器类型业务的优化相关推荐

  1. php mysql 分类_php+mysql实现无限分类实例详解

    本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...

  2. redis mysql 原子计数器_redission计数器实现,redisTemplate计数器

    在redission 2.9.0版本之前是有BUG,在实现下面代码时,第一次是成功的,但是在第二次就会失败: RedissonClient client;//client参考别的demo RMapCa ...

  3. MySQL日期数据类型、时间类型使用总结

    转载链接:http://www.jb51.net/article/23966.htm MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ----- ...

  4. ( 4 )MySQL中的数据类型(字符串类型)

    MySQL中的数据类型(字符串类型) 字符长类型 六中数据库中的数据类型 char , varchar , text ,blob,enum,set char和varchar char定长:磁盘空间比较 ...

  5. 数据存取演变史、数据库软件应用史、数据库的本质、分类、 MySQL数据库、系统服务制作、基本的SQL语句

    数据存取演变史 1.文本文件 文本文件有两个主要的缺点:第一个就是不能保证多用户存取的文件路径一致:第二个就是不能保证多用户存取的数据格式一致 2.软件开发目录规范 软件开发目录规范规定了数据文件的大 ...

  6. mysql中存储指纹数据_业务数据指纹(MD5)的使用和存储注意

    md5 开始 有时由于存储优化或实现业务要求,或数据引用.去重要求.需要对业务数据计算和存储指纹信息. 以下分析几方面. 1.指纹算法选择 2.指纹输入的数据选择 3.指纹储存方法 指纹算法选择 理论 ...

  7. mysql请输入一个有效类型的长度值_MySQL数据库基础(三)——SQL语言

    MySQL数据库基础(三)--SQL语言 发布时间:2020-05-19 16:40:05 来源:51CTO 阅读:10596 作者:天山老妖S MySQL数据库基础(三)--SQL语言 一.SQL语 ...

  8. MySQL索引系列--索引的类型

    原文网址:MySQL索引系列--索引的类型_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL的索引的类别. 按索引列的类型分类 普通索引.主键索引.唯一索引.外键索引.全文索引.联合索引. ...

  9. mysql 不同分区 同时insert_一文看懂mysql数据库分区表概念、类型、适用场景、优缺点及原理...

    概述 最近对项目上部分表按时间做了分区,所以顺便整理下mysql分区表的一些内容,仅供参考. 一.分区表概念 分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分, ...

最新文章

  1. 2021年大数据ELK(二十四):安装Kibana
  2. C++应用程序性能优化
  3. “中国GPT-3”开放APP开发接口,百万奖金智能应用开发大赛同步启动
  4. 一维信号双边滤波器_定义图上的各向异性、动态、频谱和多尺度滤波器
  5. ExecutorService——shutdown方法和awaitTermination方法
  6. 与Maven和Docker的集成测试
  7. 三层嵌套gridview 的折叠展开
  8. 缠中说禅电子书_缠中说禅作者的可怕之处
  9. C程序设计--排序(冒泡、选择、插入)--冒泡
  10. OpenStack安装CentOS镜像:Device eth0 does not seem to be present, delaying initialization
  11. 用混淆矩阵计算kappa系数
  12. 云更新网吧系统服务器,云更新网吧无盘
  13. 均匀分布、正态分布、二项分布、泊松分布、指数分布
  14. fatal: detected dubious ownership in repository at ‘D:/‘之解决方法
  15. 软件开发过程与项目管理(16.项目结束)
  16. python中stripped string_22-.strings 和 stripped_strings变量多个文本
  17. AS608指纹模块于51单片机的二次开发
  18. 关于left / right / stereo / mono
  19. UNIX的spctl命令
  20. POJ3255(次最短路)

热门文章

  1. HDU 1576 A/B(数论简单题,求逆元)
  2. 锐捷交换机 查看端口流量信息
  3. 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
  4. 请检查captcha表格_【分享】工程资料这样写,再也不用担心检查组来检查资料了...
  5. java web 的map_javaweb开发过程中小工具系列之将Map转换成对象
  6. 用计算机字符写名字,NSIS:把计算机名转换为大写或小写字符
  7. c语言计算结果为1. inf0000,C语言复习题及答案老师给的
  8. C++析构函数为什么要为虚函数?
  9. 剑指offer面试题[9-3]-矩形覆盖
  10. Loadrunner 第一个场景设计Controller