Mysql写入频繁,怎么破?这是我见过的最清晰的“神操作”

本文介绍了如何使用Node.js连接MySQL数据库,创建测试表并模拟写入。此外,还展示了wrk工具进行HTTP压力测试的方法,以及分享了针对Java开发者的学习资源,包括全套学习资料和面试题解析。
摘要由CSDN通过智能技术生成

`替换brew.git:

cd “$(brew --repo)”

git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

替换homebrew-core.git:cd “$(brew --repo)/Library/Taps/homebrew/homebrew-core”

git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git`

  • 再执行一次brew install wrk即可

使用Node.js连接mysql

================

  • 先准备一个执行sql语句函数

`const mysql = require(‘mysql’);

const { MYSQL_CONF } = require(‘./config’);

const con = mysql.createConnection(MYSQL_CONF);//建立连接con.connect();//统一执行sql的方法function exec(sql) {

const promise = new Promise((resolve, reject) => { con.query(sql, (error, result) => {

if (error) {

reject(error);

} resolve(result); }); }); return promise;

}//关闭连接function kill() {

con.end();

}module.exports = { exec, kill };`

  • 再准备一个配置文件 config.js(可以根据环境变量区分配置)

`//获取环境变量

const env = process.env.NODE_ENV; let MYSQL_CONF;

//开发环境的配置MYSQL_CONF = { host: ‘localhost’,

user: ‘root’,

password: ‘123456’,

port: ‘3306’,

database: ‘blog’,

socketPath: ‘/tmp/mysql.sock’,

};module.exports = { MYSQL_CONF };`

  • 如上所示,跑起来

  • 首先创建测试表

exec('CREATE TABLE IF NOT EXISTS TEST_WRITE(first_column INT , second_column VARCHAR(100));')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 通过可视化工具Navicat可以看到表已经创建成功

开始模拟写入

======

  • 先写一个接口,用来模拟用户请求,写入数据库

`app.get(‘/test’, (req, res) => {

exec(“INSERT INTO first_table(first_column, second_column) VALUES(1, ‘aaa’);”);

res.json(success({ errcode: 0, data: {} }));

});`

介绍下wrk

======

  • wrk是一个用来做HTTP benchmark测试的工具。可以产生显著的压力。相比于Apache ab功能更为强大,可以使用lua脚本来支持更为复杂的测试场景,例如PUT请求等。在对于Restful架构的API接口来说,测试起来更加便捷。

  • 使用方法

`使用方法: wrk <选项> <被测HTTP服务的URL>

Options: -c, --connections 跟服务器建立并保持的TCP连接数量

-d, --duration 压测时间

-t, --threads 使用多少个线程进行压测

-s, --script 指定Lua脚本路径

-H, --header 为每一个HTTP请求添加HTTP头

–latency 在压测结束后,打印延迟统计信息 --timeout 超时时间

-v, --version 打印正在使用的wrk的详细版本信息 代表数字参数,支持国际单位 (1k, 1M, 1G)

代表时间参数,支持时间单位 (2s, 2m, 2h)`

  • 目前我们服务跑在本地http://localhost://8080

  • 测试下

wrk -t8 -c500 -d2s --latency "http://localhost:8080/test"

  • 采用8个线程,500个长链接,压测2秒

  • 结果:

`Running 2s test @ http://localhost:8080/test

8 threads and 500 connections

Thread Stats Avg Stdev Max +/- Stdev

Latency 40.70ms 9.60ms 83.48ms 66.26%

Req/Sec 640.89 328.89 1.43k 64.29%

Latency Distribution

50% 39.26ms

75% 46.33ms

90% 54.32ms

99% 65.23ms

8980 requests in 2.08s, 3.13MB read

Socket errors: connect 253, read 201, write 0, timeout 0

Requests/sec: 4321.60

Transfer/sec: 1.50MB`

  • 2s内完成了8980个请求,3.13mb的数据读取

  • 当然你也可以用lua脚本个性化测试,这里不做过度的讲解,有兴趣可以去学习下

  • 数据库结果,写入成功

Mysql写入频繁,怎么破?这是我见过的最清晰的“神操作”

加大压力测试

======

  • 加大压力测试

wrk -t15 -c1000 -d30s --latency "http://localhost:8080/test"

  • 此时cpu打到了25%,当然我这是一台Mac pro,如果是普通的机器估计此时已经…

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

Java高频面试专题合集解析:

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

更多Java架构进阶资料展示

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
713505409922)]

更多Java架构进阶资料展示

[外链图片转存中…(img-pGwF71DV-1713505409923)]

[外链图片转存中…(img-wZIEyDKY-1713505409925)]

[外链图片转存中…(img-R292ZoxG-1713505409927)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值