MYSQL Handler Socket插件(二)性能测试

WebSocket之仿QQWeb即时聊天系统:从零到一的Node.js实战 本文详细介绍了如何使用Node.js和WebSocket技术从零开发一个仿QQ的Web即时聊天系统。内容涵盖技术选型、核心功能实现、性能优化及安全防护等关键环节,特别解析了WebSocket低延迟通信、消息存储设计等核心技术点,为开发者提供完整的实战指南。 阅读详情

HandlerSocket Oprofile测试报告

(MySQL通过SQL执行K/V查询的Oprofile信息)

MySQL执行SQL语句,首先要经过SQL解析阶段,调用MYSQLparse() 和MYSQLlex() 进行语法和词法解析;然后进入查询优化阶段,调用make_join_statistics() 和JOIN::optimize() 获得统计信息和生成执行计划,可以清洗第发现,主要耗资源的是SQL解析和优化层,而不是InnoDB存储层,row_search_for_mysql只消耗了很少的时间。

因此我们对比Memcached/NoSQL,知道MySQL除了数据操作,还要很多额外的步骤需要完成:
1 Parsing SQL statements【解析SQL】
2 Opening, locking tables【打开并锁定表】
3 Making SQL execution plans SQL【解析SQL并生成执行计划】
4 Unlocking, closing tables【解锁并关闭表】
另外,MySQL 还必须要做大量的并发控制,比如在发送/接收网络数据包的时候,fcntl() 就要被调用很多次;Global mutexes比如LOCK_open,LOCK_thread_count也被频繁地取得/释放。所以在Oprofile的输出中,排在第二位的是my_pthread_fastmutex_lock()。并且Mutex的竞争带来的上下文切换,导致%system占用CPU使用比例相当高(>20%)。

其实, MySQL 开发团队和外围的开发团体早已意识到大量并发控制对性能的影响,MySQL 5.5中已经解决了一些问题,Percona也对Mutex做了一些拆分处理,未来的MySQL版本中,也应该会越来越好。

在完全内存操作的情况时,CPU的效率非常重要。如果只有一小部分数据进入内存,那么SQL语句带来的消耗可以忽略不计。很简单,因为机械磁盘IO操作的时间消耗远比CPU解析SQL语句的时间消耗多,这种情况下,就不需要过分考虑SQL语句所带来的消耗。但是对于SSD盘,尤其是PCI-E SSD盘,响应时间在微秒级(Fusion I/O为30us左右),就必须考虑SQL带来的消耗了。
在大多数的MySQL 服务器中,大部分的热点数据都缓存在内存中,因而访问变得只受CPU的限制。Profiling 的结果就类似上所述的情况:SQL 层消耗了大量的资源。假设需要做大量的PK查询(例如:SELECT x FROM t WHERE id=?)或者是做LIMIT的范围查询,即使有70-80%都是在同一张表中做PK查询(仅仅只是查询条件中给定的值不同,即value不同而已), MySQL 还是每次需要去做 parse/open/lock/unlock/close, 这对我们来说是非常影响效率的事情。

(MySQL通过HandlerSocket执行K/V查询的Oprofile信息)

HandlerSocket性能测试报告:

【测试主机】
机型:R510
CPU:Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
内存:4G*6
磁盘:146G*2(OS) + 300G*12 RAID10(data)
1) 完全随机测试

测试场景描述:

² 单实例MySQL 5.1.48 InnoDB Plugin

² 测试SQL:INSERT INTO table (key, value) VALUES(#key#, #value#) / SELECT value FROM table WHERE key=#key#

² HS API:execute_single

2) 重复获取同一条数据

测试场景描述:
1 单实例Percona 5.1.57-12.8 XtraDB
2 测试SQL:SELECT value FROM table WHERE key=#key#
3 HS API:execute_single
4 MC API:get

备注

[1] Oprofile信息和HandlerSocket原理摘自HandlerSocket作者Yoshinori Matsunobu的博客

[2] 测试数据是在我们实际的DELL R510主机上测试


基于Coze平台从零构建AI智能体:以测试用例生成为例的实战指南 在人工智能技术快速发展的今天,大语言模型(LLM)和提示词工程(Prompt Engineering)已成为构建智能应用的核心技术。其原理在于通过自然语言指令引导模型完成特定任务,其技术价值在于极大地降低了AI应用开发的门槛,使非专业开发者也能快速实现想法。这一技术广泛应用于自动化办公、智能客服、内容生成等场景。本文聚焦于字节跳动旗下的Coze平台,该平台通过可视化工作流编排和预置技能,将上述技术封装为易用的工具。文章以“根据产品需求文档(PRD)自动生成测试用例”这一具体场景为例,详细拆解了从需求分析、工 阅读详情

相关推荐

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

集成电路测试-ATE(相关入门)

1.什么是ATE测试机台?2. ATE测试工程师相关岗位职责?3. 目前的发展趋势和相关工作环境?

m0_62850842的博客 7444

半导体设备隔振必看:如何用天棚阻尼PID控制实现VC-C级振动抑制(含SIMULINK模型)

本文深入探讨了在半导体精密制造中,如何运用天棚阻尼PID控制算法实现VC-C级振动抑制。通过构建高保真单自由度仿真模型,详细解析了从算法原理、SIMULINK实现到参数整定的全链路方案,并针对谐波扰动提供了陷波滤波器设计方法,为工程师提供了从仿真到实践的完整主动隔振技术指南。

pz89012345的博客 537

芯片FT量产测试工装介绍

测试负载板(Load Board)是一种连接测试设备与被测器件的机械及电路接口,主要应用在半导体制造后端IC封装后的良率测试,透过此阶段 的测试,可以剔出功能不良的IC,避免后续电子产品因不良IC产生报废。它是一个IC和PCB之间的静态连接器,它会让芯片的更换测试更为方便,不用一直焊接和取下芯片,这样的话,就不会损伤芯片和PCB,从而达到快速高效的测试。ATE测试用的治具,安装与Handler,不同型号的Handler需要不同结果的change Kit。下图是一款支持QFN48 封装IC的Socket。

flomingo1的专栏 5101

两级运算放大器设计与仿真

运算放大器(简称运放)是许多模拟系统和混合信号系统中的一个完整部分。各种不同复杂程度的运放被用来实现各种功能:从直流偏置的产生到高速放大或滤波。伴随者每一代 CMOS 工艺,由于电源电压和晶体管沟道长度的减小,为运放的设计不断提出复杂的课题。 运算放大器的设计可以分为两个较为独立的步骤,第一步是选择或搭建运放的基本结构,绘出电路结构草图,第二步就要选择直流电流,手工设计管子尺寸,以及设计补偿电路等等,然后在手工计算的基础上,运用模拟电路仿真软件对设计的两级运放进行仿真,并对电路进行后续的调试和修改。....

qq_50968231的博客 11万+

【物联网】基于LORA组网的远程环境监测系统设计(ThingsCloud云平台版)_资料编号34

实现一主多从的LORA组网远程通信,主机和两个从机都配备了STM32F103单片机与 LoRa 模块,主机作为中心设备及WIFI网关,负责接收和发送数据到远程物联网平台和手机APP,两个从机则负责采集数据并通过各自的 LoRa组网将数据发送给主机。

嵌入式阿齐Archie 1万+

芯片FT量测简介

概要:芯片的量测需求的资源主要是ATE+Handler+量测治具+测试程序。ATE:ATE是Automatic Test Equipment的缩写, 于半导体产业意指集成电路(IC)自动测试机, 用于检测集成电路功能之完整性, 为集成电路生产制造之最后流程, 以确保集成电路生产制造之品质。Handler:即Test Handler集成电路测试分选机。量测治具主要包括:LoadBoard、Socket、RF Cable、Change Kit等。测试负载板(Load Board)是一种连接测试设备与被测器件的机

qq_36033382的博客 2万+

WPF+MVVM案例实战(二十三)- 阴影效果详解

通过附加属性实现阴影效果,通过改变不同的阴影属性值达到不同阴影效果

lingshuangcanxue 559

Handler理解,测试

private void handlerTest() { final Handler[] handler = new Handler[1]; new Thread(new Runnable() { @Override public void run() { //要看以下这段代码写在什么线程中,如果是子线程中,就会自动在子线程中新建消息队列 //子线程中一定要.

Goals1989的博客 1681

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 125

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1229

HandlerSocket的性能测试

HandlerSocket Oprofile测试报告 (MySQL通过SQL执行K/V查询的Oprofile信息) MySQL执行SQL语句,首先要经过SQL解析阶段,调用MYSQLparse() 和MYSQLlex() 进行语法和词法解析;然后进入查询优化阶段,调用make_join_statistics() 和JOIN::optimize() 获得统计信息和生成...

yuanlanjun 191

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MYSQL Handler Socket插件(一)原理

HandlerSocket的应用场景: MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产品,比如Redis/MongoDB等。不可否认,在做一些简单查询(尤其是PK查询)的时候,很多NoSQL产品比MySQL要快很多,而且前台网站上的80%以上查询都是简洁的查询业务。 MySQL通过HandlerSocket

很多时候,你缺少的不是知识而是热情 2017

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MYSQL Handler Socket插件(四)安装与使用

一、安装HandlerSocket-Plugin-for-MySQL https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL #cd HandlerSocket-Plugin-for-MySQL #sh ./autogen.sh #./configure --with-mysql-source=/home/jfy/soft/Percona-Server-5.5.18-rel23.0 --with-mysql-bindir=/usr/local/m

很多时候,你缺少的不是知识而是热情 1895

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MYSQL Handler Socket插件(三)优势和缺陷阐述

HandlerSocket的优势和特点: 1) 支持多种查询模式 HandlerSocket目前支持索引查询(主键索引和非主键的普通索引均可),索引范围扫描,LIMIT子句,也即支持增加、删除、修改、查询完整功能,但还不支持无法使用任何索引的操作。另外支持execute_multi() 一次网络传输多个Query请求,节省网络传输时间。 2) 处理大量并发连接 Handle

很多时候,你缺少的不是知识而是热情 1530

Handler-Socket Plugin for MySQL – SQL的功能、NoSQL的性能

记得半年多前写过MySQL vs NoSQL ,且一直以来我比较坚持用数据库存储K/V数据,因为不只是对数据安全等能提供保障,主要是发现大部分系统的qps根本就没那么高,能上4k的水平已经很少了,这点MySQL完全可以满足,因为优化好的K/V请求,在MySQL的SQL层上能实现每核心5k左右的qps,而这一数据在HandlerSocket出来之后,得到了更大的提升。 HandlerSocket

ajian005的专栏 1017

HandlerSocket的安装实例及性能测试

  一 HandlerSocket简介 Hanldersocket是一个MySQL守护进程插件,它让应用程序可以将MySQL当NoSQL使,Hanldersocket的主要目的是与存储引擎,如InnoDB交互,而不需要SQL相关的开销。访问MySQL表时,Hanldersocket仍然需要打开和关闭表,但不是每次访问都要求打开和关闭,因此减少了互斥争夺,极大地提高了系统性能,当流量变小时,Ha...

神技圈子的博客 5785

Mysql的HandlerSocket插件

Mysql的HandlerSocket插件

哲 1109

Memcache + MySQL + HandlerSocket

1.LRU机制缓存淘汰算法: Least recently used(最近最少原则) 具体详见这里2.Memcache缓存MySQL原理和缓存过程通过Memcache提高网站访问速度和减少数据库压力,通过这篇文章了解Memcache和MySQL之间的交互流程关系3.lazy load机制对有缓存层的数据库进行增删改操作时,采取lazy load策略。 新增时只写入数据库,并不会马上更新Memca

xixihaha的博客 695

mysql handlersocket_HandlerSocket

记得半年多前写过MySQL vs NoSQL ,且一直以来我比较坚持用数据库存储K/V数据,因为不只是对数据安全等能提供保障,主要是发现大部分系统的qps根本就没那么高,能上4k的水平已经很少了,这点MySQL完全可以满足,因为优化好的K/V请求,在MySQL的SQL层上能实现每核心5k左右的qps,而这一数据在HandlerSocket出来之后,得到了更大的提升。HandlerSocket pl...

weixin_29359765的博客 171

Debian 9 LAMP 实战校准指南:PHP模块化、Apache保守配置与MariaDB socket认证

LAMP 是 Linux、Apache、MySQL(或 MariaDB)、PHP 四大开源组件构成的经典 Web 开发栈,其核心价值在于稳定、可控与高度可定制。在实际部署中,不同发行版对各组件的默认策略存在显著差异——尤其 Debian 以安全基线高、包粒度细、服务行为严谨著称。例如 PHP 不提供元包而强制模块化安装,Apache 默认禁用 .htaccess 覆盖,MariaDB root 用户采用 unix_socket 插件认证而非密码登录。这些设计并非缺陷,而是 Debian ‘不替用户做决定’

CURSED! 685

HandlerSocket简介以及php使用handlersocket

HandlerSocket 作者:Eugene ,发布于2012-11-9   目录: HandlerSocket的原理 HandlerSocket的优势和缺陷阐述 HandlerSocket的性能测试 HandlerSocket的原理 HandlerSocket的应用场景: MySQL自身的局限性,很多站点都采用了MySQ

u011871037的专栏 824

HandlerSocket

目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源: Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成数据不一致。这在强调即时性的Web2.0时代,不可取。Memcache崩溃后的雪崩效应:作为缓存的Memca

a1436445152的专栏 421

Java最高频八股文速通

final 类:String 类被声明为 final,这意味着它不能被继承,从而防止了通过继承改变其行为。final 字段:String 类中的 value 字段是 final 的,这保证了 String 对象在创建后其内部字符数组不会被改变。没有提供修改方法:String 类没有提供任何可以修改其内容的方法。所有对 String 的操作(如拼接、替换等)都会生成一个新的String 对象。

qq_43751506的博客 6395

AI时代C++就业指南:从核心原理到实战培养计划

在计算机编程领域,编程语言是实现软件功能的基础工具。C++作为一种高性能、低层级的系统编程语言,其核心原理在于直接操作内存和硬件资源,实现对计算性能的极致控制。这种技术价值使其在需要高性能、低延迟和资源受限的场景中不可替代。随着人工智能技术的普及,AI模型的训练和推理对底层计算效率提出了更高要求,这催生了大量需要C++进行底层优化的应用场景,例如AI框架核心引擎、高性能推理库和边缘计算设备。本文聚焦于C++在AI时代的关键作用,探讨其在AI系统、自动驾驶、游戏引擎等领域的应用,并为开发者提供从入门到精通的实

weixin_30386713的博客 318
上一篇: MYSQL Handler Socket插件(一)原理
下一篇: MYSQL Handler Socket插件(三)优势和缺陷阐述
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值