
数据库
文章平均质量分 70
canger_
Linux C/C++、golang、云原生
展开
-
TiDB分表唯一主键ID——sequence 与gorm无法获取主键的解决
按理说用了TiDB后就不用去考虑分库分表的问题了,但是由于业务场景上同时也要支持MySQL,且确实数据上存在一定隔离性,因此通过数据类型进行水平分表了。MySQL水平分表后的主键id通过snowflake来写入,而TiDB的主键id决定通过tidb的sequenceID来实现SequenceSequence 是数据库系统按照一定规则自增的数字序列,具有唯一和单调递增的特性。在官方 SQL 2003 标准中,其被定义为"生成连续数值的一种机制,Sequence 既可以是内部对象,也可以是外部对象"。因为原创 2022-04-21 10:55:01 · 2390 阅读 · 0 评论 -
TiDB删除大数据的处理
在 TiDB 的架构中,所有数据以一定 key range 被切分成若干 Region 分布在多个 TiKV 实例上。随着数据的写入,一个集群中会产生上百万个甚至千万个 Region。单个 TiKV 实例上产生过多的 Region 会给集群带来较大的负担,影响整个集群的性能表现。数据删除后查询速度为何会变慢?大量删除数据后,会有很多无用的 key 存在,影响查询效率。可以尝试开启 Region Merge 功能,具体看参考最佳实践中的删除数据部分。开启 Region Merge开启 Region M原创 2022-04-20 10:04:14 · 3246 阅读 · 1 评论 -
redis丢key和bigkey的问题
丢key (缓存污染现象:现场老是出现redis-key丢失的情况,昨天的key今天就没了排查角度:1、key是否设置过期时间2、检查key的删除逻辑3、查看redis中已使用的内存是否接近maxmemory,导致触发了内存淘汰策略如果是第三种情况,则根据业务场景需要设置一下config修改redis-config修改maxmemory修改maxmemory-policy 由 allkeys-lru改为 volatile-lru查看哪些key占用了比较多的内存(bigke原创 2022-04-18 09:52:29 · 1082 阅读 · 0 评论 -
MySQL中的锁与事务
MVCCNext-key Lock 解决幻读的问题事务隔离级别原创 2022-03-31 15:06:51 · 745 阅读 · 0 评论 -
使用MySQL/Tidb数据库的一些经验【缓慢更新中...】
使用MySQL和Tidb作为存储数据库时遇到的一些经验总结插入批量插入拼接sql语句,一次性发送多条(注意拼接的sql大小,数据库一般都有限制sql语句的大小)REPLACE INTO主键会被更新,本质上是先删除再新增INSERT INTO xxx ON DUPLICATE KEY没有记录则新增,有则在原有行上更新对应列插入重复数据package mainimport ( "database/sql" "github.com/sirupsen/logrus".原创 2022-03-29 19:17:55 · 1291 阅读 · 0 评论 -
Gorm V2的使用感受和Save方法
Gorm V2的使用感受和Save方法和v1对比gorm-v2不支持多表情况下软硬删除的混合链式调用,否则会panicgorm-v2的create如果在select后调用,会出现插入空值的情况,可以通过select().create或者用db.session来解决https://github.com/go-gorm/gorm/issues/4778gorm-v2不需要subQuery了gorm-v2没有newScope方法来获取表名了给我目前最大的方便:可以进行批量插原创 2021-12-30 17:15:34 · 4675 阅读 · 0 评论 -
Mysql8.0安装添加用户
查看默认账户通过以下命令安装mysqlsudo apt-get install mysql-serversudo apt install mysql-clientsudo apt install libmysqlclient-dev检查是否安装成功sudo netstat -tap | grep mysql查看默认账户sudo cat /etc/mysql/debian.cnf根据debian.cnf 里面的文件内容,user和password登录mysqlmysq原创 2020-09-02 00:42:11 · 418 阅读 · 0 评论 -
Ubuntu搭建MySQL数据库
前段时间一直在找Ubuntu安装MySQL数据库的文章,由于我的Ubuntu版本实在太老(12.04),所以找了很多都一直都没有成功,几乎每次都是sudo apt-get install的时候就提示我未安装依赖的包,或者说我需要版本升级,最后一气之下删了更新管理器中的软件源中的其他软件中的杂七杂八的链接,竟然就阴错阳差地安装成功了。。。所以,如果你在第三步也碰到这种问题,不妨看看更新管理器中有没有...原创 2018-09-25 13:11:27 · 2715 阅读 · 0 评论 -
Qt中针对SQLite的并发访问
问题:SQLite是一种文件级别的数据库,因此他的锁机制也是文件级别的,只支持并发读访问数据库,不支持并发写,也不支持并发读写。只要有一个线程进行写操作,其他线程都将等待,如果同时执行读写操作,会返回SQLite_Busy。因此对于写操作是需要串行执行的。解决方案:1.最初是想通过循环执行,如果query.exec执行失败,那么会循环直到执行成功为止,但是我看了下Qt的文档,以及网上查了...原创 2019-04-07 00:03:11 · 5686 阅读 · 1 评论