数据库
zhangSir134
不断思考,不断总结
展开
-
java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合
java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合1、引入pom <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.1.6</version> </depende原创 2020-12-01 14:49:02 · 6613 阅读 · 0 评论 -
mysql 报错解决思考Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mysql报错:[Err] 1055 - Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘库名.表名.字段’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by分析发生这个错误,一般是原创 2020-11-24 20:21:27 · 15231 阅读 · 3 评论 -
mysql8.0 线上线下数据库版本不一致导致的问题
问题:线上注册失败,线下测试环境没问题update t_authentication_code set invalid = 0,update_time = sysdate() where email = ‘XXX’ and code = ‘XXX’ and invalid = 1;同样的sql,线下执行成功,线上却一直没有修改成功分析:排除其他原因后,最后发现线上mysql的版本是mysql8,而线下测试数据库是mysql5。再看建表语句,果然也不一样,尤其是排序规则线上:CREATE TA原创 2020-10-31 11:49:05 · 7702 阅读 · 0 评论 -
mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix
mysql 报错 Specified key was too long; max key length is 767 bytes当mysql数据库的字符集使用了utf8mb4,就很容易在执行建表sql的时候报这个错误。原因:mysql有个系统变量innodb_large_prefix,如果开启了,索引键前缀限制为3072字节;如果禁用了,索引键前缀限制为767字节。当mysql数据库的字符集使用了utf8mb4,每个字符最大的字节数为4,如果建表语句中,有类似varchar(255)的字段,4*原创 2020-10-19 17:53:04 · 8699 阅读 · 0 评论 -
quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist
问题:spring-boot 整合quartz的时候,连接windows的mysql的时候好好的,然而用linux上的mysql的时候,启动就报了这个错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist分析:首先用windows的mysql是没问题的。其实linux的mysql也是有这个表的,但由于是从windows复制过去的,所以表名都是小写的,而quartz启动的时候找的是大写,所以认为test.QRTZ原创 2020-09-25 21:31:39 · 19463 阅读 · 6 评论 -
数据库选型经验汇总
数据库选型下面这些都是免费开源的。原创 2020-06-30 19:16:14 · 8382 阅读 · 0 评论 -
赶紧看一下mysql8.0版本的新特性,你的数据库是不是该升级了
mysql8.0,又一个大版本,如果用了mysql,本文内容是一些必知的新特性原创 2020-04-10 00:51:22 · 8630 阅读 · 0 评论 -
clickhouse 分片
我们知道mysql数据库如果想做分片,需要使用第三方组件,这是因为mysql在设计之初就没有太多考虑分布式等问题。而clickhouse作为新生代性能之王,分片也是必须的功能。基本上从2015年之后的各种数据库也罢,框架也罢,都开始支持分布式功能了,其实功能实现不是很难,只不过如果这些数据库自己支持分布式的话,对于开发者就会少很多事情。今天我们简单讲下clickhouse的分片。其实也就是一个视...原创 2019-12-19 21:22:00 · 9796 阅读 · 0 评论 -
clickhouse的ReplacingMergeTree引擎实战
学习ReplacingMergeTree引擎,首先你得了解clickhouse的MergeTree引擎,因为MergeTree引擎是MergeTree引擎的一个扩展版引擎,他拥有和MergeTree一样的功能,同时新增了一个删除相同主键数据的功能。我们知道,clickhouse的MergeTree引擎,是clickhouse众多引擎中,号称性能最好的一个引擎,但他只能按照分区删除数据,所以有些场...原创 2019-12-16 19:09:02 · 15623 阅读 · 6 评论 -
[错误记录] --- clickhouse报错Decimal value is too small
java操作clickhouse数据库,执行insert的时候,报错:Exception in thread "main" ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 69, host: xx.xx.xx.xxx, port: xxxx; Code: 69, e.displayText(...原创 2019-11-25 16:18:36 · 11524 阅读 · 0 评论 -
错误记录:expected single matching bean but found 2
springboot项目,之前有mysql数据源,现在又新增了clickhouse数据源,于是新增了一个clickhouseDatasource的配置bean,结果报错,如下:nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'get...原创 2019-11-19 09:46:45 · 9362 阅读 · 0 评论 -
[数据库] --- clickhouse
clickhouse是一个列式数据库(系统)。官方文档官网比较全,但也比较杂,下面就是我个人的一些总结,以及在实际工作中的应用场景。1.clickhouse适用场景clickhouse主要适合那种大量数据做分析的场景。一般数据insert进去,也就不要修改和删除了。比如那种埋点的数据,每秒成百上千条插入,但对事务的要求不高。clickhouse比较吃内存,这也是它比较快的原因之一。...原创 2019-11-18 23:54:26 · 8410 阅读 · 0 评论 -
[转载] --- 数据库基本知识
里面的很多点,我之前都总结过,但是感觉这篇把这些都连起来了,总结的挺好,转载保存一下【从入门到入土】令人脱发的数据库底层设计前言说到数据库这个词,我只能用爱恨交加这个词来形容它。两年前在自己还单纯懵懂的时候进了数据库的课堂,听完数据库的课,觉得这是一门再简单不过的课程,任何一门编程语言都比SQL要晦涩难懂,任何一门理论课程都比数据库关系要复杂得多。直到从被面试官按在地上摩擦,到工作中那一条条...转载 2019-09-29 10:37:55 · 7315 阅读 · 0 评论 -
[转载] --- springboot mongoTemplate聚合操作Demo代码
package com.tangzhe.mongodb.mongotemplate;import com.mongodb.BasicDBObject;import com.mongodb.DBObject;import com.tangzhe.mongodb.BaseTest;import com.tangzhe.mongodb.Student;import com.tangzhe.s...转载 2019-09-27 10:06:55 · 7720 阅读 · 0 评论 -
mongodb数据库,批量插入性能测试记录
spring boot 框架下,操作mongodb数据库maven:spring-data-mongodb:2.1.3.RELEASEmongo数据库用的是本地的mongo,所以环境不一样,可能结果不一样。但趋势应该是一样的。简易代码如下://CheckedData是存入mongo对应的实体类List<CheckedData> checkedDataList = new Ar...原创 2019-09-25 17:22:16 · 10220 阅读 · 0 评论 -
mongodb 索引详解
使用springboot连接mongodb的时候,涉及到索引的使用举例:@Document(collection="book")//注释的是复合索引//@CompoundIndexes(// {// @CompoundIndex(name = "复合索引名字",def = "{'字段01':1,'字段02':1}")// })...转载 2019-09-23 15:22:00 · 8228 阅读 · 0 评论 -
redis单线程为什么还快的个人解释
面试的时候,面试官问,redis是单线程还是多线程答:单线程面试官再问,单线程,为什么还快呢?不应该是多线程才更快吗?那这是不是有什么矛盾啊?答:啊???。。。。。。(心里卧槽,就是单线程所以快啊,还说多线程什么事,难道是我哪块的知识点出了问题了?)对,这是一次真实的面试,没想到快被用烂的redis,竟然让人这样问住了,其实道理我知道,但一时突然语塞,真不知道怎么解释好,其实是一个坑。...原创 2019-05-30 00:18:06 · 7490 阅读 · 0 评论 -
[数据库]-----记一次mysql分库的操作(冷热分离)
前提:原有库是mysql数据库,已经根据用户pin分片,每片又是一主两从.主表已经分过表了 而且库中数据量已经超过千万,而且已每天大概3万的数据持续增长,将来每天或许会更多在这个前提下,考虑到数据库将来是否能持续抗住大流量的查询,有了多种方案: 1.用es缓冲 2.用redis缓冲 3.分库...原创 2019-04-02 17:55:38 · 16697 阅读 · 3 评论 -
mysql分页查询报错,及解决
mysql分页查询报错: 前提: 1.每页1000条数据 2.查到57页的时候,就报错了 以下是错误信息:org.springframework.jdbc.UncategorizedSQLException:### Error querying database. Cause: java.sql.SQLException: vtgate: http://vtgate-lf-produ...原创 2018-06-25 21:37:40 · 9317 阅读 · 0 评论 -
[数据库]-----mysql数据的冷热分离 第二版
1.前提这次数据库的冷热分离算是第二次做了其实之前已经做过一次冷热分离了,涉及到数据库复制时,当时是趋近于业务的(后面会详细讲),整体来讲不是很好用,这次算是重构了吧做的最终结果还是和前一次一样:数据库中的订单数据,是每时每刻都在增加我们认为3个月以内的数据,用户会频繁的操作,称为热数据3个月以前的数据,基本上不会有修改的地方了,查询也是很少量的,我们称为冷数据所以将现有数据库称之为...原创 2019-04-02 17:55:19 · 11461 阅读 · 6 评论 -
[数据库]---mysql数据库 使用binlog+canal或binlake进行数据库的复制
前言在进行冷热分离的时候,需要将数据实时的复制在历史数据库中,我们使用的是binlog+canal的思想,将每次数据库数据的变更转换成消息发出来,然后再操作这些消息达到数据复制的在京东,实现同样功能的组件,叫binlake接下来详细说下:1.Binlogmysql有多种日志,常见的有:错误日志(ErrorLog)更新日志(UpdateLog)二进制日志(Binlog)查询日志(...原创 2018-10-10 22:19:50 · 10272 阅读 · 1 评论 -
搭建: canal部署与实例运行
转至:https://blog.csdn.net/hackerwin7/article/details/37923607 1、准备:github:https://github.com/alibaba/canal里面有包括canal的文档,server端 client端的 例子 源码包等等。2、canal概述:canal是应阿里...转载 2018-10-10 22:35:37 · 7666 阅读 · 0 评论 -
[数据库]---mysql 插入sql之 INSERT INTO和INSERT IGNORE INTO和REPLACE INTO和ON DUPLICATE KEY UPDATE比较应用
mysql插入一条数据方式有四种,接下来逐个说明验证:前提:有一个表,作为本次测试:CREATE TABLE `zs_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`...原创 2018-10-23 18:03:03 · 8128 阅读 · 1 评论 -
mysql索引(b+tree)小记
索引:快速检索的数据结构,缺点是插入时要创建索引树,所以索引不能太多1.hash O(1) 时间复杂度低 有冲突,不支持范围查询,不支持排序2.二叉树BST 平衡树:O(logn) 缺点:当树不平衡时,相对于没有索引3.红黑数 相对二叉树,相对平衡 插入逐渐增大时,也会有右倾,也不是很平衡4.b+tree 多路自平衡搜索树,解决红黑树和二叉树的缺点 Degree(...原创 2018-11-08 21:44:23 · 7619 阅读 · 0 评论 -
[数据库] ------ mysql 执行计划
mysql 执行计划简单来说,mysql整体架构分为三块:应用层,逻辑层,物理层应用层:负责与客户端交互,建立连接,返回数据,响应请求。逻辑层:负责查询处理,事务管理等物理层:实际物理磁盘上存储的文件,主要有数据文件和日志文件以查询为例:逻辑层接到应用层来的查询sql,立马开启一个线程对其进行处理第一步查询处理器会对sql查询进行优化,之后生成执行计划,交给计划执行器计划执行器访问...原创 2018-12-21 20:59:06 · 7790 阅读 · 0 评论 -
[数据库] ------ mysql规范
mysql规范:mysql优化的第一步,就是规范,国有国法,家有家规,一个团队在一起开发,也一定要有一套明确的规范来相互制约,下面这些规范只是作为一个互联网行业的建议,我相信一个团队最终的规范,应该要比下面的更加细致和严谨。一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集解读:万国码...原创 2018-12-25 20:39:13 · 7721 阅读 · 0 评论 -
如何写一个数据库中间件以及需要准备的知识储备
什么是数据库中间件1.透明化 使用方无感知,或者尽量少感知。通过现有的接入端接入已有服务2.增量服务 不改变数据库本身功能的前提下,提供额外的功能与服务一个原则 不破坏原有逻辑,并且让用户基于之前的经验可以快速上手接入端协议的选择 1.编程语言接口(jdbc) 2.数据库协议(数据库本身的协议,不同的数据库有不同的协议,而且有的公开,有的还不公开)数据库 ...原创 2019-01-11 23:25:44 · 8520 阅读 · 0 评论 -
mysql数据库支持emoji表情的详解
mysql之前的编码设置一直是utf8,但是在存emoji表情的时候,就会报错,如下:Error updating database. Cause: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8A\xF0\x9F…’ for column ‘这是我表中的字段’ at row 1初步定位是数据库不支持emoji表情...原创 2019-03-23 17:02:12 · 13560 阅读 · 1 评论 -
数据库---事务的隔离级别
首先,我们下面说的数据库事务,都是使用INNODB引擎的结果。MYISAM是没有事务的,也就没有下面这些说法。1.数据库事务的四大特性:原子性:事务包含的所有数据库操作要么全部成功,要不全部失败回滚一致性:一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是100块,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得...原创 2019-05-31 00:02:46 · 7474 阅读 · 0 评论 -
数据库---mysql的索引和引擎
mysql 的索引和引擎mysql的数据都是存放在磁盘上的,都说索引会使查询变快,那么肯定是索引用了特殊的数据结构。常见的数据结构有:hashhash就是咱们在hashMap中的那个hash,用hash确实快,而且时间复杂度是O(1),但是hash不适合范围查询,所以索引的主要数据结构应该不是hash。二叉树普通二叉树作为最初的树形结构,确实在某些情况下就很快了,但是由于对于自...原创 2019-05-29 23:55:42 · 7671 阅读 · 0 评论 -
[数据库]---nosql,非关系型数据库整理
1.关系型数据库与非关系型数据库的区别2.非关系型数据库的分类 2.1 k-v型存储2.1.1 Redis 2.2 列存储2.2.1 Hbase 2.3 文档存储2.3.1 MongoDB 2.4 图型存储 待研究3.非关系型数据库的用处...原创 2018-06-20 22:49:25 · 7780 阅读 · 0 评论