最近遇到一个统计的需求场景,针对db中的数据,看一下每天的数据量情况,由于DB中时间字段采用的是int存的时间戳,所以最开始想到的是直接对时间进行按天取整,然后再Group统计数据;
除此之外,使用DATE_FORMAT
函数来处理可能是更简洁的方法了,下面分别介绍下两种方式
最近遇到一个统计的需求场景,针对db中的数据,看一下每天的数据量情况,由于DB中时间字段采用的是int存的时间戳,所以最开始想到的是直接对时间进行按天取整,然后再Group统计数据;
除此之外,使用DATE_FORMAT
函数来处理可能是更简洁的方法了,下面分别介绍下两种方式
对于mysql而言,我摩恩知道utf8与utf8mb4两种编码之间是不同的,通常来说我们推荐使用后者,可以用来存储emoj表情;通常而言,上面的编码对于我们的实际使用并没有什么影响,然而现实总有特殊场景
下面记录一下定位mysql-connector-java客户端建立连接,设置编码的全过程
在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?
接下来本文将介绍一下Mysql5.7+之后提供的json_extract函数,可以通过key查询value值
mysql修改表数据类型的方式
modify
1 | alter table xxx modify id int(11) unsigned not null auto_increment comment '主键id' |
add column
1 | -- after 表示这个新增的列在id这一列之后 |
drop column
1 | -- 删除 xxx 这一列 |
最近遇到一个由于唯一性索引,导致并发插入产生死锁的场景,在分析死锁产生的原因时,发现这一块还挺有意思的,涉及到MySql中不少的知识点,特此总结记录一下
做一个简单的如下的连表查询,居然直接提示错误,居然是字符集不一致的问题,本文记录一下mysql的字符集类型,以及下面这个问题的解决方案
1 | select a.id, b.id from tt as a, t2 as b where a.xx = b.xx |
查看与修改mysql的最大连接数命令如下
1 | -- 查看最大连接数 |
索引一般用来提高查询效率,避免全集合搜索,那么在mongodb中,支持索引么?如果支持,如何定义索引,如何使用索引,如何确定一个sql是否走索引?
前面介绍document的新增、删除、更新都处于相对常见和基础的说明,但是考虑到mongodb非结构化的特点,它的一些特性是我们的mysql不会遇到的,本文将针对这些特殊场景给出示例说明
前面介绍的查询可以说是常见的典型case,但是mongodb中有两个比价特殊的数据类型,数组 + 对象,自然的也会有一些非典型的查询case,下面主要针对这两种数据类型的查询姿势,给出实例讲解
前面介绍了两篇influxdb的查询基本操作姿势,然后有些小伙伴在实际的使用过程中,发现了一些有意思的问题,这里单独开一篇进行说明
上一篇的mongodb查询,主要介绍的是一些基本操作,当然有基本就高阶操作;
本文将带来更多的查询姿势
MongoDb文档查询,主要借助find方法来完成,在实际的业务开发中,为了满足各种复杂的业务场景,查询的姿势也是各种各样,本篇则主要介绍基本的使用姿势,不涉及到聚合、排序、分页相关内容
文档相当于关系数据库中数据行,也是我们最关心的数据本身;以BSON格式存储(和json区别不大)
我们通常所说业务开发者的CURD四大技能,在mongodb中,就是针对Document而言,接下来我们先看一下文档的新增使用姿势
集合,相当于关系型数据库中的table,在mongodb中,集合的概念非常贴切,属于文档(Document)的集合
其最大的特点是:
我们通常把mongodb叫文档型数据库,mysql叫关系型数据库,influxdb叫时序数据库,如果熟悉这三个的话,会发现他们都有一个database
,它是collection/table/measurement
的上一级,可以简单的把它理解为更高层级的集合,方便统一管理/权限划分/业务拆分
下面简单介绍一下database的基础操作
mongodb和我们通常使用的关系型数据库如mysql,在一些基本概念上有相同之处,但也有一些区别,在进行mongodb的语言介绍之前,有必要先了解一些基础概念
本文将对比sql对一些基础概念进行解释说明
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
本篇为mongodb系列教程第一篇,环境安装与连接设置
前面一篇介绍了influxdb中基本的查询操作,在结尾处提到了如果我们希望对查询的结果进行分组,排序,分页时,应该怎么操作,接下来我们看一下上面几个场景的支持
在开始本文之前,建议先阅读上篇博文: 190813-Influx Sql系列教程八:query数据查询基本篇
前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别
在influxdb中没有专门的修改数据的update
语句,对于influxdb而言,如果想修改数据,还是得使用我们前面的说到的insert
来实现,那么怎么判断一条insert语句是插入还是修改呢?
接下来开始进入influxdb的curd篇,首先我们看一下如何添加数据,也就是insert的使用姿势
在进入本篇之前,对于不了解什么是retention policy, tag, field的同学,有必要快速过一下这几个基本概念,可以参考文后的系列教程
influxdb中的一条记录point,主要可以分为三类,必须存在的time(时间),string类型的tag,以及其他成员field;而series则是一个measurement中保存策略和tag集构成;本篇教程将介绍一些这几个概念
在influxdb中measurement相当于mysql中的表,可以理解为一条一条记录都是存与measurent中的,一个数据库中可以有多个measurement,一个measurement中可以存很多的数据。虽然可将measurement类比为mysql中的表,但是他们之间的差别也挺明显的
retention policy这个东西相比较于传统的关系型数据库(比如mysql)而言,是一个比较新的东西,在将表之前,有必要来看一下保存策略有什么用,以及可以怎么用
对于influxdb而言,database和我们更熟悉的mysql中的dababse没有什么特别的区别,可以将数据库简单理解为一堆表(measurement)的集合,接下来我们将看一下在influxdb中,database的常规操作
influxdb 时序数据库,因为实际业务中使用到了,然而并没有发现有特别好的文章,完整的介绍influx sql的使用姿势,因此记录下实际开发中学习的体会,主要参考来自于官方文档 Influx Query Language (InfluxQL)
在创建要给表的时候遇到一个有意思的问题,提示Specified key was too long; max key length is 767 bytes
,从描述上来看,是Key太长,超过了指定的 767字节限制
直接使用influx-cli查询数据时,时间戳格式不太友好,记录下显示日期的方式
连接时添加参数
1 | influx -precision rfc3339 |
连接后设置参数
1 | # 进入控制台 |
mysql内部提供了时间戳和日期互转的函数方便直接使用
给表新增字段时,发现锁表了,查看进程,提示Waiting for table metadata lock
,等待锁释放;然而蛋疼的是几分钟过去了,依然没有任何的进展
现在就有几个问题了
mongodb中集合的导入导出,在robot3t工具中没有找到对应的方法,记录下控制台的操作流程
主要利用: mongoexport
与 mongoimport
记录下同时新增多列的sql写法
1 | alter table table_name add (amount decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '数量' , price decimal(20,8) NOT NULL DEFAULT '0.00000000' COMMENT '价格'); |
用圆括号包含起来即可
MySQL表修改频繁,导致表被锁死,悲催的表现时这个表完全没法继续使用了,查询,修改,删除都不能使用,这种场景下除了重启mysql服务之外还可以怎么处理?
参考: How To Use Mytop to Monitor MySQL Performance
Centos 下可以直接通过yum进行安装
1 | yum install mytop |
Update your browser to view this website correctly. Update my browser now