
mysql
百物易用是苏生
企鹅小兵,搞搞大数据
展开
-
mysql中数据列NULL不算做count 与distinct,空字符串算,唯一索引须确保列不为NULL,否则不唯一
mysql中 count(*) count(1) count(primary_key) 算全量记录count(field) 如果field 中NULL,则不会计算值count(combina_unique_fields1,combina_unique_fields1) 如果组合索引的列中,有一列含NULL,那么它们都不能做到唯一,方案是service层判定NULL,补上默认值,不要NULLdistinct 也是一样,NULL不会当做一条记录空字符串可当做一个确切值,不影响唯一索引...原创 2021-01-27 15:07:10 · 1062 阅读 · 1 评论 -
SQL的join与spark join区别
spark中想到了对右表中数据小于开启广播的大小,会自动优化;但是不确定是否左边表也能够自动检测小于并优化为广播;还想到了对sql的支持,在语法上,SQL中是小表在前(左表)驱动大表;然后还有sql中对in/exists/not in/not exists的使用推荐;#这里计简要结论 默认left join形式1. spark在join中只能对右表进行广播,并且要开启广播,数据小于配置 spark.broadcast.blockSize(默认4M,注意磁盘与内存中数据大小可能不一样,压不压缩也原创 2021-01-15 14:08:41 · 324 阅读 · 0 评论 -
[mysql] mysql插入四字节“表情字符”“\xF0\x9F\xA4\x94”异常
参考博文:https://blog.youkuaiyun.com/testcs_dn/article/details/75533784设置table表字符集utf8mb4,或者database库字符集utf8mb4,或者整个数据库字符集utf8mb4但是要mysql-connector-java包要5.1.47及其以上版本以上设置utf8mb4才有效,不然依然报错。一般要重启应用(重新连接数据库),一般不需要重启整个数据库。...原创 2020-09-02 16:53:20 · 1598 阅读 · 0 评论 -
【mysql】记录一次truncate表后利用binlog恢复情况
今日午休醒来,有点懵,测试环境truncate表时,清错了一张配置表,需要恢复。但是该机器上没有备份机制,开发环境到是有,但极有可能数据不同步。然后开始binlog按时间,与表名,确定了binlog的 --stop-position,但是没有用,因为binlog都是配合备份数据弄的,binlog只是导出执行日志,在当前状态下,再执行一遍,因为没有数据,都是update操作 依然还是空数据。如果配合备份数据,恢复到之前某时刻状态,再用binlog将那个时刻到现在truncate之前操作再执行一遍,原创 2020-08-21 20:31:27 · 3189 阅读 · 0 评论 -
【mysql】Invalid JSON path expression. The error is around character position 3
select json->'$.0.data' from test_json ;使用myslq的json列名查询,居然出现异常。Invalid JSON path expression. The error is around character position 3原因,json列内的数字field,必须用英文双引号括起来(官网文档可查)更正:select json->'$."0".data' from test_json ;然后突发奇想实验:json-&g..原创 2020-08-20 15:09:31 · 9468 阅读 · 0 评论 -
mysql重启服务,出现Authentioation is required to maage syste servc or units.
因为要测试mysqld服务重启,是否会造成自增列的auto_increment计时器会重置为当前数据集列最大值加1.使用命令:service mysql restartsudo service mysql restart然后出现:=== AUTHENTIOATING FOR org.freedesktop.systemd1.manage-units ===Authrentioatio...原创 2019-06-27 09:57:20 · 17221 阅读 · 0 评论 -
mysql重启服务,自增列id的auto_increment会重置为当前列最大值加1
生产事件:实时数据迁移到历史数据出现自增主键重复异常原因: 实时业务部分有删除记录操作,后续跑批将实时数据迁移到历史数据库表,因为mysql服务异常宕机,重启mysql服务后,因自增列auto_increment会重置为当前列的最大值加1,刚好有业务操作删除和删除迁移的事物终端致使记录丢失,然后造成主键重复注意: 迁移到历史数据库时,对机器宕机、服务宕机造成自增主键重置的情况要考虑...原创 2019-06-27 09:44:11 · 2834 阅读 · 2 评论 -
【mysql】四 mysql中对 json类型列插入特殊字符处理
字段感知逻辑中,过滤配置使用mysql的json列,遇到正则插入特殊字符问题表中是INT类型 的JSON列,普通赋值 string 前后加上单引号即可插入;###问题:Invalid JSON text: “Invalid escape character in string.” at positon ……在heidiSql的工具中 直接修改值,对\反斜杠,\双反斜杠等无法插入;后来直接测...原创 2019-04-03 20:56:35 · 5034 阅读 · 0 评论 -
【msyql】三 left join 左连接 验证全量接口自动感知功能
需求压测1000 dps下自动感知各个系统上报数据的project、api、field等相关信息,需要sql验证几十个project、数百个api、数百个field的字段感知数据在分布式环境下是否一致。自动感知逻辑:实时引擎过采样,入JVM中ArrayBlockingQueue队列;另一个Spout/Bolt消费JVM中ArrayBlockingQueue队列自动感知project、api、f...原创 2019-03-29 12:36:46 · 349 阅读 · 0 评论 -
【mysql】二 select * from (select * from table) as table2 使用 与 convert、cast的String转INT使用
需求:查询某列最大值+1,做为新纪录的列值(分布式环境,一条语句实现)问题一:先查询到最大值+1select nextCode from (select max(projcode)+1 as nextCode from sm_sys_project where syscode=‘000’ ) as t要点:取别名 as tableName (略取as也可)eg:select max+...原创 2019-03-27 15:43:22 · 3202 阅读 · 0 评论 -
【mysql】一 where not exists 语句用于“按条件查询没有记录才新增”
【mysql】 where not exists 语句用于“按条件查询没有记录才新增”需求:实现sql语句测试:(version mysql 5.7.18)重点:from dual 的使用测试 变种update 无法配合 where not exist还有if not exist 是写sql存储过程方法的需求:多机器分布式环境下,某列要去重插入,但本身就带有重复项,无法建立唯一索引去inser...原创 2019-03-25 20:25:22 · 16723 阅读 · 0 评论 -
【mysql】五 不借用mybatis等框架的语句 实现多张表的信息补充,实现 值为null、''时全条件查询(条件失效)
信息表补充一:(不行)select t1.*, t2.* from table1 t1,table2 t2 where t1.field1="xxx" 这样的结果不行,例如 t1表中 field1="xxx" 中符合的10条,而t2 全表5条,那么会组合成 10*5=50条,不会自动根据相同字段名组合的。二:(不行)select t1.*,t2.* from table1 t1,ta...原创 2019-04-25 17:38:17 · 178 阅读 · 0 评论