MySQL数据库
文章平均质量分 81
Mysql被Oracle收购之后,越来越像Oracle数据库,特别是mysql8.0的新特性,已经在向Oracle9i看齐。
独孤清扬玩DB
这个作者很懒,什么都没留下…
展开
-
mysql中计算时间差
TIMESTAMPDIFF(时间单位,参数1,参数2)可以设置参数,可以精确到天(DAY),小时(HOUR),分钟(MINUTE),秒(SECOND),毫秒(FRAC_SECOND(低版本不支持,可以用秒,再乘1000)),计算机制为参数2-参数1,最后结果为数字,单位为第一个参数设置的值(week 周,month 月,quarter 季度,year 年 )这几个单位没有经过测试,但是应该也是支持的 --相差1天 select TIMESTAMPDIFF(DAY, '2018-03-..转载 2021-06-04 14:13:31 · 1136 阅读 · 0 评论 -
SQL 窗口函数的优化和执行
窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。本文首先介绍窗口函数的定义及基本语法,之后将介绍在 DBMS 和大数据系统中是如何实现高效计算窗口函数的,包括窗口函数的优化、执行以及并行执行。什么是窗口函数?窗口函数转载 2021-05-27 15:40:52 · 380 阅读 · 0 评论 -
MySQL5.7收集表统计信息时对该表上增删改查的影响
先说下结论:收集统计信息期间对该表上DML和select的影响:结论是会影响DML,select不影响,并不是整改analyze过程都影响,大概影响1/3 analyze table时间。官方文档说明:https://dev.mysql.com/doc/refman/5.7/en/analyze-table.html中有一段话对analyze table行为做了说明,如下:During the analysis, the table is locked with a read lock .原创 2021-05-19 17:08:43 · 425 阅读 · 0 评论 -
sysbench压测时遇到max_prepared_stmt_count相关错误
参考文章:https://zhuanlan.zhihu.com/p/67188414问题现象:报错 FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)sysbench压测异常终止问题引入在做压力测试的时候,我使用了sysbench 1.1.0-faaff4f版本,测试命令如下:sysbench oltp_read_only.lu转载 2021-03-03 16:28:00 · 1188 阅读 · 2 评论 -
MySQL的SQL预处理(Prepared)
官方参考:https://dev.mysql.com/doc/refman/5.7/en/sql-prepared-statements.html一、SQL 语句的执行处理1、即时 SQL 一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下: 1. 词法和语义解析; 2. 优化 SQL 语句,制定执行计划; 3. 执行并返回结果; 如上,一条 SQL 直接是走流程处理,一次编译,单次运行,此类普通语句被称作 Immediate Statements (即时转载 2021-03-03 16:26:44 · 1009 阅读 · 1 评论 -
Xtrabackup远程备份+限速
远程备份一个好处是,不占用本地磁盘空间,可以直接备份到远程主机指定的目录。但在数据量很大的情况下要防止网络中断导致的远程备份失败。方法1:ssh + 密码的方式innobackupex --host=192.168.30.11 --user=root --password=1234 --port=3306 --stream=tar /tmp | gzip | sshpass -p 'bigbangdata.cn' ssh root@192.168.30.14 "cat - > /tmp/ba原创 2021-02-10 11:15:46 · 1401 阅读 · 1 评论 -
MySQL分页查询中该避开的坑
参考文章:https://cloud.tencent.com/developer/article/1550771MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。1. LIMIT 语句分页查询是最常用的场景之一,但也通常也是转载 2021-01-26 11:05:44 · 545 阅读 · 0 评论 -
数据库中表名、字段名、字符串大小写处理规则
测试数据:CREATE TABLE `test` (`name` varchar(30));insert into test values('abc');insert into test values('Aaa');insert into test values('ccc');从遇坑说起应用场景:查询表test中以大写A开头的内容,于是有19:54:18[5.7.25-log]root->192.168.30.20[mtest]> select * from test原创 2021-01-26 10:41:02 · 2957 阅读 · 0 评论 -
揪出数据库中看不见的字符
应用报出了异常,发现某表某字段下的数据多了些字符,但是在数据库中用sql查看时不一定能够发现。这种情况一般是在字符结尾多了空格、制表符、回车符、换行符等造成。可以从数据库中校验并修正这些异常数据。基础知识特殊字符ascii码,Oracle和MySQL中的表示方法: 特殊符号 Oracle MySQL TiDB 空格 chr(32) char(32)原创 2021-01-23 14:49:57 · 2265 阅读 · 0 评论 -
特殊字符ascii码
ASCII控制字符二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 00000000 0 00 NUL ␀ 空字符(Null) 00000001 1 01 SOH ␁ 标题开始 00000010 2 02 STX ␂ 本文开始 00000011 3 03 ETX ␃ 本文结束 00000100 4 04...转载 2021-01-23 11:11:16 · 9359 阅读 · 0 评论 -
Mysql改写子查询SQL优化案例
sql逻辑需求:需要定期统计表单数据,然后把汇总的结果展示在前端界面根据业务逻辑实现了sql编写,产生了慢SQLSELECT DISTINCT DATE_FORMAT(sr.SIGN_DATE, '%Y-%m-%d') as signDate, count(sr.PRODUCT_NO) as totalSign, (SELECT count(1) FROM t_red_data t1 ...原创 2021-01-22 18:17:47 · 402 阅读 · 1 评论 -
使用oracle/mysql/tidb由空格引发的血案解析
Oracle 11.2测试表:create table white_space ( name varchar2(128), name2 char(128) );MySQL 5.7、TiDB 3.0测试表:drop table white_space;create table white_space (id bigint(20) unsigned not null auto_increment,name varchar(128),name2 char(128),prima原创 2021-01-08 18:30:30 · 529 阅读 · 0 评论 -
Slave_SQL线程异常终止处理之跳过错误
手动跳过1个或更多个事务/* 传统点位模式复制 */SQL>set global sql_slave_skip_counter=1;SQL>start sql_thread;/* GTID模式复制 */SQL>set gtid_next='e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791';SQL>begin;commit;SQL>set gtid_next='AUTOMATIC';自动连续跳过原创 2020-12-19 21:05:39 · 742 阅读 · 1 评论 -
为什么建议使用count(*)来统计数据行数
对比MySQL5.7版本、Oracle 11g版本、TiDB3.0版本其中MySQL是基于 InnoDB 引擎的。MySQL中各种count的行为参考自:丁奇老师的MySQL 45讲这里,首先你要弄清楚 count() 的语义。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。最后返回累计值。所以,count(*)、count(主键 id) 和 count(1) 都表示返回满足条件的结果集的总行数;而 .原创 2020-12-04 12:50:06 · 1988 阅读 · 0 评论 -
mysql is blocked because of many connection errors
故障现象:zabbix监控之前一直运行的好好的,但突然出现如下的页面报错,报错提示的也挺直接,说是数据问题:经排查,是由于MYSQL数据库的参数:max_connect_errors(系统默认10) mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求累计超过10次,就再也无法连接上mysqld服务,解决方法:1、root登陆mysql执行flush hosts 或mysqladmin执行flush hosts 或者重启MySQ原创 2020-12-01 11:00:31 · 1375 阅读 · 0 评论 -
MySQL中使用adddate函数产生随机日期+时间
使用adddate函数和rand()函数生成随机日期+时间的好处在于不会出现2月份有30天的问题,日期函数帮你处理。下面是SQL代码:SELECT ADDDATE(ADDDATE(ADDDATE(ADDDATE( '2000-01-01 00:00:00', FLOOR(RAND() * 7300)), -- 2000 - 2020年,中间间隔大概7300天 INTERVAL F原创 2020-11-26 15:27:06 · 1270 阅读 · 0 评论 -
mysqldump备份原理及注意事项
mysqldump的备份原理是什么呢?抛开源码不谈,其实我们可以通过打开general log,查看mysqldump全库备份时执行的命令来了解mysqldump背后的原理。只考虑innodb表的情况如下图所示:打开general logroot@ 04:55: [sbtest]> set global general_log=on;Query OK, 0 rows affected (0.00 sec)12其中,general log的存放路径可通过以下命令查看...转载 2020-10-28 17:23:27 · 756 阅读 · 0 评论 -
MySQL中修改列属性时造成comment属性丢失
修改字段定义的时候,要把整个字段的全部的定义都写上,举个栗子:原字段定义:state varchar(50) NOT NULL DEFAULT '' COMMENT '产品资料状态'需求:修改字段长度为100正确的写法:alter table t1 modify state varchar(100) NOT NULL DEFAULT '' COMMENT '产品资料状态'错误的写法:alter table t1 modify state varchar(100) ...原创 2020-10-27 17:38:18 · 1870 阅读 · 0 评论 -
Mysql Oracle Tidb对空值的处理
三种类型的数据库下面分别创建对应的测试表:--Oracle 11.2CREATE TABLE t_oracle ( id int , name varchar2(10), dept varchar2(20) not null);--MySQL 5.7 CREATE TABLE t_mysql ( id int , name varchar(10), dept varchar(20) not null); --TiDB 3.0 CREATE TABLE t_tid原创 2020-10-09 14:30:07 · 1736 阅读 · 0 评论 -
各种类型变量的定义以及赋值
局部变量局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。set语句是设置不同类型的变量,包括会话变量和全局变量。 局部变量定义语法形式DECLARE var_name [, var_name]... data_type [ DEFAULT value ];例如在begin/end语句块中添加如下一段语句,接收函数传进来的...原创 2020-08-23 17:54:33 · 3620 阅读 · 0 评论 -
MySQL中varchar类型字段隐式转换造成多删除数据
例如一个表中字段是varchar类型:desc test;+-------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+----------------+| id | int | NO |原创 2020-07-30 17:11:20 · 560 阅读 · 0 评论 -
MySQL中各种日期格式转换
日期格式的转换总结1)、unix time和日期格式互转比如zabbix history表中的clock字段保存的是unix time,看到的是一串数字,可以使用FROM_UNIXTIME去转换unixtime转换为日期格式:select FROM_UNIXTIME(unix time)日期格式反转成unixtime格式:select UNIX_TIMESTAMP(SUBDATE(now(),interval 5 minute))2)、日期和字符串之间的转换orac.原创 2020-07-29 19:45:13 · 6183 阅读 · 0 评论 -
MySQL中通过结构化文本倒腾数据
拼接为sql语句使用mysql dump可以对表或者其它对象dump出来,可以以文本或者sql语句的形式,如果针对一张表的结果集还好说,甚至还可以使用where选项,但如果是多表关联,就不能把整个结果集导出为sql语句。传统方式为使用into outfile选项导出为本地文本文件。可以使用sql语句拼接的方式,把多表关联的查询输出为sql insert into语句,适合于数据量比较小的情况下,通过字符串类型字段快速的倒腾。select concat( 'insert into us...原创 2020-07-29 17:43:12 · 224 阅读 · 0 评论 -
MySQL访问权限管理
参考文档:官方文档:https://dev.mysql.com/doc/refman/5.7/en/security.html这里有你想要的所有...书籍:《MySQL性能优化金字塔法则》账户权限操作详细语法参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/account-management-statements.html创建用户示例:CREATE USER 'jack'@'localhost' IDENTIFIED BY '.原创 2020-07-27 18:04:25 · 1298 阅读 · 0 评论 -
MySQL优化SQL性能问题
执行计划执行计划,就是显示数据库引擎对于SQL语句的执行的详细情况,其中包含了是否使用索引,使用什么索引,使用的索引的相关信息等。查看执行计划方法MySQL EXPLAIN 命令是查看优化器如何决定执行查询的主要方法。帮助我们了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。官网:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html.原创 2020-07-21 17:21:24 · 299 阅读 · 0 评论 -
MySQL闪回原理与实战
MySQL闪回原理与实战DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。MySQL闪回(flashback)利用binlog直接进行回滚,能快速恢复...转载 2020-03-29 20:05:02 · 295 阅读 · 0 评论 -
多种系统负载100%方法(高可用测试、性能压测用)
文章目录1、高可用压测1.1、CPU使用率100%1.2、内存使用率100%,发生swap1.3、IO资源压测1.4、进程数达到上限1.5、网络负载接近100%2、性能压测2.1、CPU性能压测脚本2.2、模拟客户端并发访问数据库数据压测,包括主机有很多比较专业的工具,比如:数据库:sysbench、hammerdb、loadrunner等主机:FIO、stress等本文只介绍使用数据库或...原创 2020-03-01 11:10:29 · 1752 阅读 · 0 评论 -
sysbench数据库性能压测详解
文章目录0、参考资料&适用范围1、安装2、压测2.1、CPU压测2.2、MySQL数据库压测2.2.1、选项说明2.2.2、压测步骤0、参考资料&适用范围参考资料:https://github.com/akopytov/sysbench 地址下的README.md文档。文档中详细介绍了安装、用法、命令行参数。适用范围:压测linux CPU/内存性能压测MySQL...原创 2020-02-29 22:31:13 · 848 阅读 · 0 评论 -
Keepalived实现mysql高可用
文章目录0、参考资料1、实现mysql双主高可用1.1、高可用方案选择1.2、双主基础上实现高可用1.2.1、安装1.2.2、主从配置文件2、原理介绍(整理自网络)0、参考资料官方地址:https://github.com/acassen/keepalived/blob/master/README.mdhttps://www.keepalived.org/manpage.htmlhttp...原创 2020-02-25 22:13:55 · 456 阅读 · 0 评论 -
mysql防止误操作之prompt命令提示符
参考官方资料:https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html设置prompt主要是方便搞清楚生产系统中登录的是哪个库,哪个用户,防止误操作。常用选项如下,其它选项详见官方文档:Option Description\c A counter that increments for each statement you is...原创 2020-02-23 21:20:52 · 441 阅读 · 0 评论 -
MySQL主从(二)--数据校验
文章目录4、pt-table-checksum校验主从数据4.0、参考资料和安装4.1、pt-table-checksum校验原理4.2、注意事项和常用参数说明4.2.1、注意事项4.2.2、常用参数说明4.3、最佳实践4.4、常见问题排查4.4.1、Diffs cannot be detected because no slaves were found5、pt-table-sync修复数据5....原创 2020-02-23 17:13:14 · 1842 阅读 · 1 评论 -
MySQL重启也无法解决的Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
故障现象:手残把配置文件’/etc/mysql/my.cnf’ 的权限设置成 “777” 了,在centos7.6环境下,使用rpm包方式安装的mysql5.7.29,在使用命令systemctl stop mysqld;systemctl start mysqld命令重启后,无任何报错反馈。也可以连接到mysql实例,但是紧接着一行warning出现,如下:Warning: World-wr...原创 2020-02-22 21:11:55 · 4183 阅读 · 0 评论 -
mysql主从(一)--搭建(GTID+row+增强半同步)
文章目录1、主从搭建1.1、mysql5.7 GTID+row+增强半同步1.1.1、主从库环境准备1.1.2、主库(3309)备份数据,在从库(3306)恢复1.1.3、创建复制用户1.1.4、从库(3306)执行change master,start slave1.2、配置为双主模式2、主从不一致时的修复2.1、从库已经有T2表,再在主库上创建T22.2、主键冲突的错误 10622.3、主库上...原创 2020-02-14 22:24:29 · 630 阅读 · 0 评论 -
MySQL初始化安装部署
文章目录0、参考资料1、Mysql的安装1.0、系统环境准备1.1、软件解压和安装1.2、新建用户、目录1.3、安装1.3.1、mysql5.7 以上版本初始化:1.3.2、mysql5.6初始化:1.4、启动mysql并修改初始化密码1.5、关闭mysql实例1.6、mysql多实例安装2、MySQL启动故障分析2.1、查找配置文件优先级2.2、排除启动故障思路3、MySQL日志4、MySQL管...原创 2020-02-13 20:51:46 · 498 阅读 · 0 评论 -
Mysql和Oracle如何计算QPS和TPS
文章目录0、参考资料1、概念2、MySQL中QPS和TPS计算方式2.1、指标相关的一些状态参数值解释2.2、计算QPS2.3、计算TPS3、Oracle中QPS和TPS计算方式3.1、Oracle和TPS&QPS相关性能视图3.2、查询出QPS和TPS0、参考资料MySQL 5.7 Reference Manual -> 5.1.9 Server Status Variable...原创 2020-01-08 18:55:22 · 5970 阅读 · 0 评论