189 8069 5689

go语言gorm获取索引 go语言调用so

Go语言使用gorm对MySQL进行性能测试

之前写过了Go语言gorm框架MySQL实践,其中对gorm框架在操作MySQL的各种基础实践,下面分享一下如何使用gorm框架对MySQL直接进行性能测试的简单实践。

10年积累的成都网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有古雷港免费网站建设让你可以放心的选择与我们合作。

这里我使用了一个原始的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实践。

Gorm 高级查询

越高级,越复杂的查询,也同时意味着高耗,但是平时有一些数据少,但是业务复杂的场景,可以使用下。 这里主要说明的是 go 中使用 gorm 进务查询。

有时候代码是可需要映射到一个 map 结构, 不需要映射到一个 结构体中,可以写成如下:

在涉及并发的场景,往往需要加锁互斥,和 Java 类似, Go 中也有加行锁的方式,加 for update 即可。

一般写法如下:

示例代码:

有时候,我们需要进行简单的数据统计, 比如查询到结果有多少行,

有时候也需要分组统计行数

有时候我们会使用到数据统计的功能, 比如根据数据库字段 batch_no 进行分组,然后统计总金额,总笔数。

分组查询统计一般的写法如下:

代码示例:

一般来说,很少使用关联查询,但是如果要使用关联查询,可以如下:

Scopes 允许你指定常用的查询,可以在调用方法时引用这些查询, 也就是说,可以在查询中使用函数。

举个例子:

在这里插入图片描述

gorm基本使用

gorm安装

gorm框架是go的一个数据库连接及交互框架,一般用于连接关系型数据库。

安装gorm,使用命令安装:

go get -u -v github点抗 /jinzhu/gorm

连接数据库

构建连接的目标为数据库中某一个库,同大多数框架一样使用url进行连接,url基本格式:

用户名:密码@连接方式(ip:port)/数据库名?参数

参数描述:

用户名 :连接数据库用户名

密码 :连接数据库密码

连接方式 :或称为访问协议,一般为tcp

ip :数据库所在服务器地址

port :数据库监听端口

数据库名 :数据库中对应要连接库名

参数 :附加数据库参数,根据数据库不同内容不同

确定url后,就可以调用gorm中参数进行连接数据库操作:

别忘记import语句导入包:

操作完数据库后不要忘了关闭连接:

表操作

创建表

gorm创建表基于结构体,所以创建表前要先用结构体规划表结构,这里简单写一个结构体,创建表时默认结构体第一个字段作为主键:

写好结构体后,调用创建表语句直接按照结构体结构创建表:

当直接创建表时,表名遵循规范:

1、大写字母全部小写,所有位于中间的大写字母都变成小写字母并且前面加下划线,例如UserInfo结构体创建为表名称为user_infos。

2、上面最后的那个s是因为直接创建表时,名称最后都会加上一个s。所以上面结构体User创建表后名称为users。

删除表

增删改查

插入数据

插入数据,插入数据方法结构使用Create方法:

查询数据

查询第一条找到的数据,使用First,该方法返回值仍然为db对象,所以接收数据时我们需要先定义一个对应表结构的结构体接收数据:

有First就有Last,同First调用格式一致。

批量查询,批量查询使用Find方法,其余参数结构同First或Last相同,只不过传参时一般传入数组参数,当然,First或Last方法也可以传入数组参数,但得到的数组只有一个数据,批量查询操作:

更新数据

删除内容

go语言对gorm不固定条件查询封装

在写sql语句时,where的条件主要是 key=1 and key2=2 或者 key=1 or key2=2 这种形式[还有 and与or 混合]。

认真分析会发现条件有 4部分 组成-- 字段名、操作符、查询值、与前一个条件的关系[and,or] ,这样就很容易实现了。下面就是一个说明,为了简化,其中会默认省略一些特征。

启动项目

访问测试地址:

带分页的地址:


文章名称:go语言gorm获取索引 go语言调用so
URL标题:http://cdxtjz.cn/article/ddieohp.html

其他资讯