测试准备

需要将InfluxDB的源码放入 go/src/github.com/influxdata 目录

单写测试代码(write1.go):

  1. package main
  2.  
  3. import (
  4. "log"
  5. "time"
  6. "fmt"
  7. "math/rand"
  8. "github.com/influxdata/influxdb/client/v2"
  9. )
  10.  
  11. const (
  12. MyDB = "testInfluxdb"
  13. username = "root"
  14. password = ""
  15. )
  16.  
  17. func queryDB(clnt client.Client, cmd string) (res []client.Result, err error) {
  18. q := client.Query{
  19. Command: cmd,
  20. Database: MyDB,
  21. }
  22. if response, err := clnt.Query(q); err == nil {
  23. if response.Error() != nil {
  24. return res, response.Error()
  25. }
  26. res = response.Results
  27. } else {
  28. return res, err
  29. }
  30. return res, nil
  31. }
  32.  
  33. func writePoints(clnt client.Client,num int) {
  34. sampleSize := *
  35. rand.Seed()
  36. t := num
  37. bp, _ := client.NewBatchPoints(client.BatchPointsConfig{
  38. Database: MyDB,
  39. Precision: "us",
  40. })
  41.  
  42. for i := ; i < sampleSize; i++ {
  43. t +=
  44. tags := map[string]string{
  45. "system_name": fmt.Sprintf("sys_%d",i%),
  46. "site_name":fmt.Sprintf("s_%d", (t+i) % ),
  47. "equipment_name":fmt.Sprintf("e_%d",t % ),
  48. }
  49. fields := map[string]interface{}{
  50. "value" : fmt.Sprintf("%d",rand.Int()),
  51. }
  52. pt, err := client.NewPoint("monitorStatus", tags, fields,time.Now())
  53. if err != nil {
  54. log.Fatalln("Error: ", err)
  55. }
  56. bp.AddPoint(pt)
  57. }
  58.  
  59. err := clnt.Write(bp)
  60. if err != nil {
  61. log.Fatal(err)
  62. }
  63.  
  64. //fmt.Printf("%d task done\n",num)
  65. }
  66.  
  67. func main() {
  68. // Make client
  69. c, err := client.NewHTTPClient(client.HTTPConfig{
  70. Addr: "http://localhost:8086",
  71. Username: username,
  72. Password: password,
  73. })
  74.  
  75. if err != nil {
  76. log.Fatalln("Error: ", err)
  77. }
  78. _, err = queryDB(c, fmt.Sprintf("CREATE DATABASE %s", MyDB))
  79. if err != nil {
  80. log.Fatal(err)
  81. }
  82.  
  83. i :=
  84. for i <= {
  85. defer writePoints(c,i)
  86. //fmt.Printf("i=%d\n",i)
  87. i +=
  88. }
  89. //fmt.Printf("task done : i=%d \n",i)
  90.  
  91. }

单机读:

  1. package main
  2.  
  3. import (
  4. "log"
  5. //"time"
  6. "fmt"
  7. //"math/rand"
  8. "github.com/influxdata/influxdb/client/v2"
  9. )
  10.  
  11. const (
  12. MyDB = "testInfluxdb"
  13. username = "root"
  14. password = ""
  15. )
  16.  
  17. func queryDB(clnt client.Client, cmd string) (res []client.Result, err error) {
  18. q := client.Query{
  19. Command: cmd,
  20. Database: MyDB,
  21. }
  22. if response, err := clnt.Query(q); err == nil {
  23. if response.Error() != nil {
  24. return res, response.Error()
  25. }
  26. res = response.Results
  27. } else {
  28. return res, err
  29. }
  30. return res, nil
  31. }
  32.  
  33. func main() {
  34. // Make client
  35. c, err := client.NewHTTPClient(client.HTTPConfig{
  36. Addr: "http://localhost:8086",
  37. Username: username,
  38. Password: password,
  39. })
  40.  
  41. if err != nil {
  42. log.Fatalln("Error: ", err)
  43. }
  44. q := fmt.Sprintf("select * from monitorStatus where system_name='sys_5' and site_name='s_1' and equipment_name='e_6' order by time desc limit 10000 ;")
  45. res, err2 := queryDB(c, q)
  46. if err2 != nil {
  47. log.Fatal(err)
  48. }
  49. count := len(res[].Series[].Values)
  50. log.Printf("Found a total of %v records\n", count)
  51.  
  52. }

代码摘自:http://www.cnblogs.com/MikeZhang/p/InfluxDBTest20170212.html

influx测试——单条读性能很差,大约400条/s,批量写性能很高,7万条/s,总体说来适合IOT数据批量存,根据tag查和过滤场景,按照时间顺序返回的更多相关文章

  1. Linux测试硬盘读性能的常用工具-hdparm和dd俩搭档

    Linux测试硬盘读性能的常用工具-hdparm和dd俩搭档 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.hparm        # 它用来在基于 Linux的系统上获取或 ...

  2. 当Thread.Sleep的暂停时间参数设置过小时,精度很差的解决方法

    一.问题产生 在C#和C++中有这样一个函数:void Sleep(int Timeout),可以让线程暂停指定的毫秒数. 但是我在win8下调用这个函数实现按照固定频率发送udp数据包时,会有一个问 ...

  3. 如何找出你性能最差的SQL Server查询

    我经常会被反复问到这样的问题:”我有一个性能很差的SQL Server.我如何找出最差性能的查询?“.因此在今天的文章里会给你一些让你很容易找到问题答案的信息向导. 问SQL Server! SQL ...

  4. Mybatis+mysql批量插入性能分析测试

    前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我 ...

  5. 漫谈linux之文件IO篇(SSD写性能和机械硬盘差不多,读是4到10倍)

    前同事的文章,觉得写得很清晰,收藏了. http://blog.chinaunix.net/uid-27105712-id-3270102.html 在Linux 开发中,有几个关系到性能的东西,技术 ...

  6. 齐博x1服务器性能太差,调整系统升级每次校验的文件数

    系统升级需要校验本地的文件是否被修改过,系统默认每次检验1千个文件,一般来说需要分四到五页来处理,如下图所示. 如果你的服务器性能太差的话,就需要手工把数值调小.把下面的代码复制出来.进入后台数据库管 ...

  7. sql server 查询性能最差的sql语句

    SELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_ ...

  8. Mybatis按SQL查询字段的顺序返回查询结果

    在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...

  9. jquery 评论等级(很差,差,一般,好,很好)代码

    可能标题没有说的太明白,这里先让大家看一下效果,以便让客官们了解小弟说的是什么... 看完效果后估计各位客官已经明白小弟说的是什么了吧,下面小弟就带大家看下代码 <style> .maxd ...

随机推荐

  1. 梦想MxWeb3D协同设计平台 2018.10.12更新

    SDK开发包下载地址: http://www.mxdraw.com/ndetail_10107.html 1. 全新的在线的三维协同设计平台,高效异步方式,基于JavaScript和WebGL技术,前 ...

  2. 15 AJAX

     AJAX AJAX 简介 AJAX 是 异步 JavaScript 及 XML(Asynchronous JavaScript and XML)的缩写.AJAX 不是一种新的编程语言,而是一种用于创 ...

  3. 骑士游历 - dp

    题目地址:http://www.51cpc.com/web/problem.php?id=1586 Summarize: 1. 题目坐标系所给 x,y与惯用表示横纵坐标相反 2. 搜索超时,使用动规: ...

  4. C++字符串处理函数总结

    1.基础函数输入输出:cin,cout,getchar,gets,putchar,puts,printf,scanf格式化:sprintf,sprintf_s,wsprintf,wsprintf_s, ...

  5. Linux:iscsi存储服务器配置

    服务器添加4块硬盘 mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 记下UUID值 mdadm -D /de ...

  6. iframe使用大全

    <iframe src=”you page’s url” width=”100″ height=”30″ frameborder=”no” border=”0″ marginwidth=”0″ ...

  7. Linux下常用的操作

    Linux下常用的操作 文件定位 locate filename 有些版本的linux会出现 -bash: locate: command not found错误,不要慌,安装一下mlocate包就好 ...

  8. [bzoj2242][SDOI2011][计算器] (Baby-Step-Giant-Step+快速幂+exgcd)

    Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...

  9. 在 Oculus和 Gear VR上开发跨平台的 VR应用

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51433994 作者:car ...

  10. spring boot 传输数组类型数据

    需要在参数加上@RequestBody注解 参考资料:https://blog.csdn.net/u012129558/article/details/51768985