数据库
comin2014
学无止境!
展开
-
MongoDB Golang 示例代码
包含 增删改查,索引设置,事务,max,cout等的使用 和 压力测试其中事务需要有 replica set集群支持完整代码如下:package mainimport ( "context" "flag" "fmt" "go.mongodb.org/mongo-driver/bson" "log" "math/rand" "sync" "time" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-dr原创 2021-11-19 11:29:31 · 780 阅读 · 0 评论 -
MongoDB max 获取最大值 (Golang)
mongoDB里某个集合,获取某个字段最大值,有两种办法,一个是用sort,另一个是用聚合(Aggregate),下面是代码演示:sort:func initIDEx() { clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") client, err := mongo.Connect(context.TODO(),clientOptions) if err != nil { return原创 2021-11-17 15:51:34 · 4223 阅读 · 0 评论 -
实测 ——Mysql 通过预处理(Prepare)提升性能
经过本人实测,采用预处理,性能提升大约接近10%。关于预处理的介绍,网上资料很多,总体关心优点有如下:预处理优点预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行); 绑定参数减少了服务器带宽,只需发送查询的参数,而不是整个语句; 预处理语句针对SQL 注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。测试代码:package mainimport ( _ "github.com/go-sql-driver/mysql" "fmt" ".原创 2021-10-28 17:06:40 · 726 阅读 · 0 评论 -
Redis Win10内存占用问题
Redis在采用pagefile做内存下面是过程记录日常开发在Windows10环境下,安装有Reids服务,发现无论填充了多少数据,用管理器查看内存都只有0.5M(如下图),带着这个疑问,进行了一下测试.但是使用Win10的资源监视器,却显示的是另外的值,当我持续写入的时候, 能看到工作集项显示的内存值,从20M左右逐步增长到7G.此时任务管理器种仍然看不到redis-server占用多少内存,依然是0.5M,但是系统总体内存占用又是对的,已经很高了, 8.原创 2021-10-21 15:34:20 · 701 阅读 · 0 评论 -
Redis 管道(pipeline)运用
Redis在进行大批量操作时,为了提高运行效率,往往会采用pipe,今天实测对比了一下管道的运行效率,还是挺惊人的.package mainimport ( "flag" "fmt" "github.com/go-redis/redis/v8" "context" "time")func main() { var pipucot int = 1 flag.IntVar(&pipucot, "pc", 1000, "pip批量处理个数") flag.Parse()原创 2021-10-21 11:21:01 · 168 阅读 · 0 评论 -
MySQL Redis一致性方案 推荐go-mysql/canal
在项目初期时, 为解决Mysql和Redis的数据同步问题, 选择了阿里开源的Canal方案, 然后压力测试时, 解决了Redis并发写入的问题后, 随之而来的瓶颈出现在了Canal client消费速度, 本机测试大约1.3w/s, 不光如此, 使用阿里的Canal还存在一些弊端:外部程序, 资料不够详尽, 社区交流效率低下, JAVA源码(我不熟悉)且臃肿(大致瞥了一眼)等等因素, 导致遇到问题不好解决, 目前开发测试阶段遇到问题也没有得到即时答复.排查问题困难重重.然后经过一番思索和查阅,原创 2021-07-09 16:39:39 · 2263 阅读 · 15 评论 -
Redis的key竞争问题 一个简单的解决方案
项目正采用阿里的canal开源项目作为mysql和redis的数据一致性方案, 当Canal client从Canal Server消费数据时, canal保证了时序, 但是在client端写入Redis时, 发现单连接顺序执行的效率不够, 会影响整体消费速率.首先想到的是加锁的方案, 单机情况, 对一个key进行redis写入操作时, 先获取key的锁, 然后执行, 多个redis连接协程同时执行时,这样也无法完全避免时序问题,还需要加时间戳, 分布式的情况下,更麻烦, 通常还要考虑第三方工具..原创 2021-08-04 00:44:20 · 146 阅读 · 0 评论 -
MySQL5.7性能测试 单表多少行
关于Mysql单表最大行数建议,网上众说纷纭,有说500W的, 有说2000W的, 为了搞清楚Mysql单库单表的实际性能情况, 纸上得来终觉浅,我最终进行了一次测试.测试环境: 16核, 16G, SSD, Windows10, Mysql5.7, 单库单表, 语言以及驱动:golang, gormmysql主要配置如下(因为同时还在作开发机使用,所以配置的不是很专业):log-bin=mysql-binbinlog-format=ROWinnodb_autoinc_lock_mode=2in原创 2021-08-04 00:50:52 · 533 阅读 · 0 评论 -
使用Mysql+Redis缓存的思考及结论
由于最近游戏项目的需求,首次考虑Redis的使用,查阅了大量网上资料和与人交流之后,目前确定了大致解决方案. 现将整个过程记录下来, 方便后续更正和补充.Redis 持久化的问题Redis虽然自身支持数据的持久化,但是似乎这样做的人很少,具体原因没有深究,存在即是道理. 那就放弃redis持久化, 采用Mysql+Redis的组合实现数据持久化和缓存数据一致性的问题那采用Mysql+Redis就会产生新的问题, 数据一致性如何保证, 当然理论上只要是双库, 就必然存在不一致的时刻, 哪怕只有万分之一原创 2021-04-21 16:04:16 · 240 阅读 · 0 评论 -
canal消费报错 is not the firstly
使用阿里的 canal做mysql的同步方案, 今天遇到一个报错如下:exception=com.alibaba.otter.canal.meta.exception.CanalMetaManagerException: batchId:177 is not the firstly:176网上没有找到解决办法, 后来自己排查了半天才发现是canal的客户端连接多线程导致的无意中写的bug导致有多个消费者并发, 从而导致了乱序… 改成单线程消费即可....原创 2021-06-07 17:56:00 · 1688 阅读 · 0 评论 -
Ubuntu Mysql8.0 初始密码问题
Mysql 8.0+版本 root用户采用的是 auth_socket(auth_socket authentication plugin authenticates clients that connect from the local host through the Unix socket file) 验证方式, 导致初次使用的时候新手会踩坑, 因此记录一下.安装完毕之后登录root时需要注意使用管理员权限ubuntu下记得 sudo mysql -uroot而不是mysql -uroot原创 2021-05-21 16:39:34 · 2609 阅读 · 6 评论