Go语言使用gorm对MySQL进行性能测试之前写过了Go语言gorm框架MySQL实践,其中对gorm框架在操作MySQL的各种基础实践 , 下面分享一下如何使用gorm框架对MySQL直接进行性能测试的简单实践 。
这里我使用了一个原始的Go语言版本的FunTester测试框架 , 现在只有一个基本的方法,实在是因为Go语言特性太强了 。框架设计的主要思路之一就是利用Go语言的闭包和方法参数特性,将一个func()当做性能测试的主题,通过不断运行这个func()来实现性能测试 。当然还有另外一个思路就是运行一个多线程任务类,类似Java版本的com.funtester.base.constaint.ThreadBase抽象类,这样可以设置一些类的属性,绑定一些测试资源,适配更多的测试场景 。
下面演示select的性能测试,这里我用了随机ID查询的场景 。
这里我使用从35开始递增的ID进行删除 。
这里使用了select的用例部分 , 随机ID , 然后更新name字段,随机10个长度的字符串 。
这里用到了FunTester字段都是随机生成 。
到这里可以看出,性能测试框架用到的都是gorm框架的基础API使用,这里MySQL连接池的管理工作完全交给了gorm框架完成,看资料说非常牛逼,我们只需要设置几个参数 。这个使用体现很像HttpClient设置HTTP连接池类似,这里我们也可以看出这些优秀的框架使用起来都是非常简单的 。
PS:关于gorm的基础使用的请参考上一期的文章Go语言gorm框架MySQL实践 。
如何测试go语言连接mysql成功golang本身没有提供连接MySQL的驱动,但是定义了标准接口供第三方开发驱动 。
这里连接mysql可以使用第三方库,第三方库推荐使用这个驱动,更新维护都比较好 。
golangmysql可扩展分表代码go-mysql-server是一个SQL引擎,能解析标准SQL(基于MySQL语法)并优化查询 。它提供了简单的接口,允许自定义表格数据源实现 。提供与MySQL协议兼容的服务器实现 。这意味着它与MySQLODBC,JDBC或默认的MySQL客户端shell接口兼容 。
如果写压力进一步扩大,并且数据量急剧快速增长,DB写节点即主库就会成为整个系统的瓶颈 。在MySQL的日常运营中,如果DB中表和表之间的数据很多是没有关系的,或者根本不需要表关联Join操作,我们可以考虑按照业务把不同的数据放到不同的服务器中,即垂直分库或叫垂直切分 。
不过需要注意的是,垂直分库无法解决单表数据量过大的问题,由于单一业务的数据信息仍然落盘在单表中,如果单表数据量太大,就会极大地影响SQL执行的性能 。由此,在MySQL应用领域,水平分表也是互联网场景应对高并发、单表数据量过大的解决方案之一 。分表在本质上可以概括为业务表在逻辑上公用一个路由结构 , 物理上分散存储 。这就是常说的Sharding分片或者分区 。
GO语言(三十):访问关系型数据库(上)本教程介绍了使用 Godatabase/sql及其标准库中的包访问关系数据库的基础知识 。
您将使用的database/sql包包括用于连接数据库、执行事务、取消正在进行的操作等的类型和函数 。
在本教程中,您将创建一个数据库,然后编写代码来访问该数据库 。您的示例项目将是有关老式爵士乐唱片的数据存储库 。
首先 , 为您要编写的代码创建一个文件夹 。
1、打开命令提示符并切换到您的主目录 。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下 , 为您的代码创建一个名为 data-access 的目录 。
3、创建一个模块 , 您可以在其中管理将在本教程中添加的依赖项 。
运行go mod init命令,为其提供新代码的模块路径 。
推荐阅读
- excel怎么顺序排列,excel中如何顺序排名
- 社区团购是如何做好营销的,社区团购如何开展
- 什么应用商店赛车游戏多,最好玩的赛车app
- linux下解权限命令 linux权限详解
- 分期手机怎么说停我社保,手机分期保险怎么取消
- 怎么评价电子竞技游戏的好,如何评价电子竞技
- 罗永浩直播带货破亿,罗永浩直播带货破亿了嘛
- python的or函数 python中的ord函数
- linux下清除历史命令,linux清除历史命令记录