202101-03 hive从mysql导入数据量变多的解决方案 原始导数命令:bin/sqoopimport-connectjdbc:mysql://192.168.169.128:3306/yubei-usernameroot-password123456-tableyl_city_mgr_evt_info--split-byrec_id-m4--fields-terminated-by"\t"--lines-terminated-by"\n"--hive-import--hive-overwrite-create-hive-table-delete-target-dir-hive-databasedefault-hive-tableyl_city_mgr_evt_info原因分析:可能是mysql中字段里面有'\n'等分隔符,导入hive时... 继续阅读 >
202101-03 为什么在MySQL中不建议使用UTF-8 最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrectstringvalue:‘\xF0\x9F\x98\x83forcolumn‘summary'atrow1我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串“问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最... 继续阅读 >
202101-03 mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效) 1、下载zip安装包点击此处下载MySQLserver8.0.22压缩包下载后直接解压即可2、解压,并配置环境变量2.1解压zip包到安装目录,我的解压在了D:\MySQL\mysql-8.0.22-winx642.2配置环境变量将解压文件夹下的bin路径添加到变量值中,前后以;开头结尾2.3创建并配置初始化的my.ini文件放在安装目录下配置文件my.ini内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=D:/MySQL/mysql-8.0.22-winx64#切记... 继续阅读 >
202012-30 Mysql根据某层部门ID查询所有下级多层子部门的示例 模拟表和数据脚本复制以下sql语句生成一个叫sys_dept的表和插入若干构造好的有层级关系的数据,直接复制执行就okDROPTABLEIFEXISTS`sys_dept`;CREATETABLE`sys_dept`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'部门编号',`p_id`int(11)DEFAULTNULLCOMMENT'父级部门编号',`title`varchar(255)DEFAULTNULLCOMMENT'父级部门名称',`is_open`int(11)DEFAULTNULLCOMMENT'是否展开(0-展开,1-不展开)',`a... 继续阅读 >
202012-30 MySQL <>和<=> 运算符介绍 <>运算符作用:表示不等于。说明:和“!=”运算符的作用一致,相较之下“<>”的可读性较差。###查询非汉族用户,以下两条语句的作用是一致的。>SELECT*FROMuserWHEREnation!="汉族";>SELECT*FROMuserWHEREnation<>"汉族";<=>运算符作用:安全等于说明:整合了“=”运算符和IS关键字的作用,既可以判断NULL,也可以判断基本数据类型。但是相较之下,“<=>”的可读性较差。从下面的SQL语句可以看出,“=... 继续阅读 >
202012-30 mysql中like % %模糊查询的实现 1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。比如SELECT*FROM[user]WHEREu_nameLIKE'%三%'将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件SELECT*FROM[user]WHEREu_nameLIKE'%三%'ANDu_nameLIKE'%猫%'若使用SELECT*FROM... 继续阅读 >
202012-30 详解MySQL like如何查询包含'%'的字段(ESCAPE用法) 在SQllike语句中,比如SELECT*FROMuserWHEREusernameLIKE'%luchi%'SELECT*FROMuserWHEREusernameLIKE'_luchi_',%作为通配符通配多个_作为通配符通配一个但当like所要查询的字段中含有%,我们如何去查:这个时候就需要指明字段中的那个'%‘不作为通配符;这里就需要用到ESCAPE转义测试:这里我们使用这张表转义前:SELECT*FROMuserWHEREusernameLIKE'%%%';这里会发现三个%号都被当做通配符了;转... 继续阅读 >
202012-30 MySQL中ESCAPE关键字的用法详解 MySQL转义转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。MySQL中,转义字符以“\”开头,编程中常见的转义字符,在MySQL均是有效的,在此不做赘述和讨论。在此,主要通过“%”和“_”来对ESCAPE关键字的作用进行说明。%:匹配任意多个字符。_:匹配单一字符。如果我们要匹配“%”或者“_”时,就必须使用“\”进行转义,如下:###... 继续阅读 >
202012-29 详解mysql插入数据后返回自增ID的七种方法 引言mysql和oracle插入的时候有一个很大的区别是:oracle支持序列做id;mysql本身有一个列可以做自增长字段。mysql在插入一条数据后,如何能获得到这个自增id的值呢?一:使用last_insert_id()SELECTLAST_INSERT_ID(); 1.每次mysql的query操作在mysql服务器上可以理解为一次“原子”操作,写操作常常需要锁表,这里的锁表是mysql应用服务器锁表不是我们的应用程序锁表。 2.因为... 继续阅读 >
202012-29 MySQL kill指令使用指南 KILL[CONNECTION|QUERY]processlist_id在Mysql中每个连接都是单独线程运行,可以使用语句KILLprocesslist_idstatement.来终止语句执行。KILL允许可选CONNECTION或QUERY修饰符:KILLCONNECTION,KILL与无修饰符相同:终止与给定关联的连接processlist_id,在终止该连接正在执行的任何语句之后。KILLQUERY终止连接当前正在执行的语句,但保持连接本身不变。使用showprocesslist查看所有idKill指令使用如果我们... 继续阅读 >
202012-29 MySQL 索引的一些细节分享 前几天同事问了我个mysql索引的问题,虽然大概知道,但是还是想来实践下,就是isnull,isnotnull这类查询是否能用索引,可能之前有些网上的文章说都是不能用索引,但是其实不是,我们来看个小试验CREATETABLE`null_index_t`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`null_key`varchar(255)DEFAULTNULL,`null_key1`varchar(255)DEFAULTNULL,`null_key2`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`)... 继续阅读 >
202012-26 MySQL系列之redo log、undo log和binlog详解 事务的实现redolog保证事务的持久性,undolog用来帮助事务回滚及MVCC的功能。InnoDB存储引擎体系结构redologWriteAheadLog策略事务提交时,先写重做日志再修改页;当由于发生宕机而导致数据丢失时,就可以通过重做日志来完成数据的恢复。InnoDB首先将重做日志信息先放到重做日志缓存按一定频率刷新到重做日志文件重做日志文件:在默认情况,InnoDB存储引擎的数据目录下会有两个名为ib_logfile1和ib_logfile2的文件。每个... 继续阅读 >
202012-26 基于PostgreSQL和mysql数据类型对比兼容 1、数值类型整数:mysql中的整数类型和pg相比,两者有以下区别:mysql:mysql中支持int1,2,3,4,8字节,同时支持有符号,无符号。并且mysql中支持在数值列中指定zerofill,用来将存储的数值通过填充0的方式达到指定数据类型的长度(mysql8开始不建议使用ZEROFILL属性,并且在将来的MySQL版本中将不再支持该属性)。pg:pg支持int2,4,8字节,且数值都是有符号的。mysql整数类型:pg整数类型:那么对于mysql中的1,3字节整型,或者... 继续阅读 >
202012-24 MySQL如何优雅的删除大表实例详解 前言删除表,大家下意识想到的命令可能是直接使用DROPTABLE"表名",这是初生牛犊的做法,因为当要删除的表达空间到几十G,甚至是几百G的表时候。这样一条命令下去,MySQL可能就直接夯住了,外在表现就是QPS急速下降,客户请求变慢。解决办法1.业务低峰时间手动执行删除这个可能就需要DBA不辞辛劳,大晚上爬起来删表了。2.先清除数据,最后再删除的方式譬如1000万条数据,写脚本每次删除20万,睡眠一段时间,继续执行。这样也能做... 继续阅读 >
202012-24 监控MySQL主从状态的shell脚本 分享一个Linux下,监控MySQL主从状态及配合企业微信机器人报警的Shell脚本SLAVE_IP:为监控的主机IPUSER:为msyql用户PASSWORD:为mysql密码WHEREIS_MYSQL:为mysql命令路径WEBHOOK:为企业微信机器人Webhook地址wx():为企业微信机器人函数Check_Mysql_Slave():为监控脚本主函数#!/bin/bash#source/etc/profileexportPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"SLAVE_IP=`ipadd|g... 继续阅读 >
202012-24 详解 MySQL 执行计划 EXPLAIN语句提供有关MySQL如何执行语句的信息。EXPLAIN与SELECT,DELETE,INSERT,REPLACE和UPDATE语句一起使用。EXPLAIN为SELECT语句中使用的每个表返回一行信息。它按照MySQL在处理语句时读取它们的顺序列出了输出中的表。MySQL使用嵌套循环连接方法解析所有连接。这意味着MySQL从第一个表中读取一行,然后在第二个表,第三个表中找到匹配的行,依此类推。处理完所有表后,MySQL输出所选列,并通过表列表回溯,直到找到一个表,... 继续阅读 >