Mysql
文章平均质量分 66
韩师学子--小倪
不要告诉别人你的计划,只需要让别人知道结果就行了。
展开
-
MYSQL每隔10分钟进行分组统计的实现方法
使用group by来进行区分即可。在mysql中,round函数用于数据的四舍五入,它有两种形式:1、round(x,d) ,x指要处理的数,d是指保留几位小数这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;2、round(x) ,其实就是round(x,0),也就是默认d为0;select count(*), concat(date(pay_time), '-', hour(pay_time), '-', round(minu...原创 2022-04-30 13:39:43 · 3724 阅读 · 1 评论 -
MySQL如何统计表格的总行数
目录使用count来统计表格的行数使用show table status命令行得到的结果速度快但十分不准确参考使用count来统计表格的行数按照效率排序如下:count(字段)<count(主键 id)<count(1)≈count(*)原因如下:count(字段):遍历每一行 + 读取字段值 + 判断为null + 判断为not nulla) 如果这个“字段”是定义为 not null 的话,需要从每一行中读取这个字段,但不需要判断是否为null,直接累计行原创 2022-04-15 13:24:26 · 2148 阅读 · 0 评论 -
大量删除mysql表数据
背景:由于业务变化,mysql表没有多余的字段进行存储,需要改变表结构,然后遇到数据表的数据量比较大。方法:为了不影响线上的业务,需要多次执行sql语句,并间隔进行休眠,例如:delete from test_table where id>=98293000 and id<98296000;select sleep(1);delete from test_table where id>=98296000 and id<98299000;select sleep(2);原创 2022-03-22 19:26:02 · 1148 阅读 · 0 评论 -
mysql查看表空间占用情况
${database} 为数据库的名称/*1.查看索引(1)单位是GB*/ SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024*1024), 6), ' GB') AS 'Total Index Size' FROM information_schema.TABLES WHERE table_schema LIKE '${database}'; /*+------------------+ | Total Index Size | +----.转载 2022-03-16 17:19:05 · 5170 阅读 · 0 评论 -
DB连接池为啥不采用NIO
目录BIO、NIO与连接池原因总结:参考BIO、NIO与连接池BIO:面向流,只能读或者只能写,阻塞IO。(排队打饭)NIO(IO多路复用):面向缓冲区,可以同时进行读写,非阻塞IO。(点餐等待被叫)连接池:原因对于使用DB的程序来讲,不管使用多路复用,还是连接池,都要维护一组网络连接,支持并发的查询。为什么并发查询一定要使用多个连接才能完成呢?因为DB一般是使用连接作为Session管理的基本单元。在一个连接中,SQL语句的执行必须是串行、同步的。这是由于对于..原创 2022-02-06 00:48:34 · 242 阅读 · 0 评论 -
INSERT的几个语法 IGNORE|REPLACE|LOW_PRIORITY | DELAYED
INSERT IGNORE与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。REPLACE运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。注意,除非表有一.转载 2021-12-17 16:15:47 · 569 阅读 · 0 评论 -
MySQL 5.7 虚拟列 (virtual columns)
Generated Column在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column。前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上,而不是每次读取的时候计算所得。Stored类型的generated columns可以用作一个物化缓存,用于复杂的条件,这些条件在运行时计算成本原创 2021-09-05 17:57:08 · 2443 阅读 · 0 评论 -
Mysql的新特性--MRR
MRR的全称是Multi-Range Read Optimization,是优化器将随机IO转化为顺序IO以降低查询过程中IO开销的一种手段。MRR原理执行一个范围查询:mysql > explain select * from stu where age between 10 and 20;+----+-------------+-------+-------+------+---------+------+------+-------------------...原创 2021-05-31 00:27:07 · 925 阅读 · 0 评论 -
debug mysql源码 --搭建环境
操作系统:windows10, 期间搭建时出现太多问题,很恶心。准备软件visual studio2015: 下载bison:下载,配置好环境变量,将安装的地址和bin路径配置到Path里去mysql5.7.25:下载,选择好版本,选中source codecmake: 下载配置windows SDK8.1visual studio 2015 安装部署后,记得配置好windows SDK8.1,不然cmake编译时会报错。不会配置的,可以选择新建一个c++项目,软件会自动提示是...原创 2021-03-21 13:52:33 · 327 阅读 · 0 评论 -
MySQL 常用30种SQL查询语句优化方法
MySQL 常用30种SQL查询语句优化方法转载:https://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247486829&idx=1&sn=422fb82742fbe311b35c5ff146092389&chksm=e91b6871de6ce167d5...原创 2018-09-01 00:32:42 · 141 阅读 · 0 评论 -
浅谈MySQL的B树索引与索引优化
浅谈MySQL的B树索引与索引优化转载:https://monkeysayhi.github.io/2018/03/06/浅谈MySQL的B树索引与索引优化/MySQL的MyISAM、InnoDB引擎默认均使用B+树索引(查询时都显示为“BTREE”),本文讨论两个问题: 为什么MySQL等主流数据库选择B+树的索引结构? 如何基于索引结构,理解常见的MyS...转载 2018-09-11 16:14:27 · 213 阅读 · 0 评论 -
SQL训练
题目描述一个员工employees表简况如下:建表语句如下:CREATETABLE`employees`(`emp_no`int(11)NOTNULL,`birth_date`dateNOTNULL,`first_name`varchar(14)NOTNULL,`last_name`varchar(16)NOTNULL,`gender`char(1)NOTNULL,`hire_date`dateNOTNULL,PRIMARY...原创 2021-02-11 16:48:24 · 1465 阅读 · 1 评论 -
mysql 字符串查找函数 instr(),locate()和position()
INSTR(str,substr)返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。代码如下 复制代码 mysql> SELECT INSTR('foobarbar', 'bar'); -> 4 mysql> SELECT INSTR('xbar', 'foobar'); -> 0 LOCATE(substr,str) , LOCATE(sub...原创 2020-11-06 18:17:36 · 1644 阅读 · 0 评论 -
Hikari 数据库连接池配置详解
Hikari 数据库连接池配置详解基本配置<!-- Hikari Datasource --> <bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource" destroy-method="shutdown"> <property name="driverClassName" value="${jdbc.dr...原创 2020-10-18 11:07:48 · 4075 阅读 · 0 评论 -
数据库连接池
数据库连接池目录一、常用的数据库连接池二、基本配置 三、关键配置四、性能配置五、各个连接池的属性说明 1)DBCP 属性说明表2)C3P0 属性说明表3) DRUID 属性说明表一、常用的数据库连接池1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。2)c3p0...原创 2020-10-07 10:57:04 · 867 阅读 · 0 评论 -
mysql如何高效批量插入数据
mysql如何高效批量插入数据1、一种可以再代码中循环着执行单条插入数据的语句,这种效率太差。insert into table ([列名],[列名]) values ([列值],[列值]));2、批量插入,这种效率比较高效。批量的好处:可以避免程序和数据库建立多次连接,增加服务器负荷。SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M。而且,由...原创 2020-08-29 12:59:42 · 8453 阅读 · 0 评论 -
测试中复现mysql的Communications link failure错误
测试中复现mysql的Communications link failure错误目录一、背景:二、出错的模拟三、错误日志四、捕获一、背景:拿到连接池的一个连接,连接池因某些原因与该连接断开了,再用该连接进行sql的运行,导致错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure二、出错的模拟1、windows系统中,出站规则设置屏蔽端...原创 2020-08-15 14:01:16 · 531 阅读 · 0 评论 -
concat和group_concat的区别
concat和group_concat的区别1、concat和group_concat都是用在sql语句中做拼接使用的,但是两者使用的方式不尽相同,concat是针对以行数据做的拼接,而group_concat是针对列做的数据拼接,且group_concat自动生成逗号。2、concat的使用select concat(id, ","...原创 2019-12-23 12:22:20 · 6008 阅读 · 1 评论 -
锁的调试
锁的调试目录背景服务器级别的锁等待找出谁持有锁InnoDB中的锁等待使用 INFORMATION_SCHEMA表背景当我们给某个表增加一列新字段,或只是进行查询,就有可能发现其他请求锁住了操作的表或者行。此时,需要完成两个操作:1、找出查询阻塞的原因; 2、知道该杀死哪个进程。服务器级别的锁等待锁等待可能发生在服务器级...原创 2019-11-10 14:43:01 · 211 阅读 · 0 评论 -
Mysql服务器状态
Mysql服务器状态目录系统变量线程和连接统计二进制日志状态临时文件和表句柄操作查询缓存SELECT 类型表锁SHOW ENGINE INNODB STATUS;SHOW PROCESSLIST;SHOW ENGINE INNODB MUTEX;复制状态INFORMATION_SCHEMA系统变...原创 2019-11-10 10:39:11 · 264 阅读 · 0 评论 -
mysql参数配置解析
mysql参数配置解析在mysql上运行 show global variables; 指令查看my.cnf的配置信息Variable_name Value 解析说明 auto_increment_increment 1 表示自增长字段从那个数开始 auto_increment_offset 1...原创 2019-11-08 22:11:32 · 396 阅读 · 0 评论 -
字符集和校对
字符集和校对目录字符集和校对创建对象时的默认值在服务器和客户端通信时的设置mysql如何选择字符集和校对规则:示例影响查询多字节编码字符集和校对字符集:一种从二进制编码到某类字符符号的映射,例如:如何使用一个字节来表示英文字符。校对:一组用于某个字符集的排序规则。Mysql对字符集的设置可以分为...原创 2019-11-02 10:05:06 · 305 阅读 · 0 评论 -
count(*)、count(列名)、count(常量)的理解
count(*)、count(列名)、count(常量)的理解内容来之阿里巴巴的开发手册1. 【强制】不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。说明:count(*)会统计值为 NULL 的行,而 co...原创 2019-07-14 13:46:42 · 1252 阅读 · 0 评论 -
查询优化器的提示(hint)
查询优化器的提示(hint)如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示(hint)来控制最终的执行计划。相关提示如下:HIGH_PRIORITY 和LOW_PRIORITY(当多个语句同时访问 一个表时,语句执行的 优先级)HIGH_PRIORITY 用于select语句时,会将此语句重新调度到所有正在等待...原创 2019-10-27 18:53:44 · 764 阅读 · 0 评论 -
mysql在同一个表上查询和更新
mysql在同一个表上查询和更新mysql不允许对同一张表同时进行查询和更新。错误例子:update tblas outer_tbl set cnt = (select count(*) from tbl as inner_tbl where inner_tbl.type = outer_tbl.type);解决办法:可以...原创 2019-10-27 17:39:41 · 1442 阅读 · 0 评论 -
mysql的排序优化
mysql的排序优化目录一、mysql的排序二、排序 算法三、关联查询的排序(分两种情况)一、mysql的排序当不能使用索引生成排序结果的时候,mysql需要自己进行排序。如果数据量小则在内存中进行,如果数据量大则需要使用磁盘,不过mysql将这个过程统一称为文件排序(filesort),即使完全是内存排序不需要任何磁...原创 2019-10-27 12:59:10 · 1876 阅读 · 0 评论 -
mysql关联查询优化器
mysql关联查询优化器目录一、关联查询的含义二、关联查询优化器三、举例四、贪婪模式一、关联查询的含义mysql的关联查询:总是从一个表开始一直嵌套循环、回溯完成所有表关联,是一个左侧深度优化的树。二、关联查询优化器它决定了多个表关联时的顺序,通常多表 关联的时候,可以 有多种不同的关联顺序来获得相结...原创 2019-10-27 12:25:08 · 438 阅读 · 0 评论 -
列表in()的比较
列表in()的比较在mysql中,in不完全等同于多个or条件的子句。mysql将in()列表中的数据先进行排序,然后通过二分查找的方式来确定列表中的值是否满足条件,这是一个O(log n)复杂度的操作,等价地转换成OR查询的复杂度为O(n),对于in()列表中有大量取值的时候,mysql的处理速度将会更快。...原创 2019-10-24 21:01:14 · 716 阅读 · 0 评论 -
show processlist(查询线程状态)命令详解
show processlist(查询线程状态)命令详解目录一、含义二、参数三、状态解释一、含义对于一个Mysql连接,或者说一个线程,任何时刻都有一个状态,该状态表示了mysql当前正在做什么。SHOW PROCESSLIST显示哪些线程正在运行。不在mysql提示符下使用时用mysql -uroot -e 'Show proces...原创 2019-10-24 10:25:51 · 3849 阅读 · 0 评论 -
mysql的索引扫描排序与全表排序
mysql的索引扫描排序与排序操作目录一、排序方式二、判断三、规则四、举例一、排序方式mysql有两种方式可以生产有序的结果:1、通过排序操作;2、按索引顺序扫描;二、判断通过explain出来的type列的值为“index”,则说明mysql使用了索引扫描来做排序。扫描索引本身是很快的,因为只需要从一条索引...原创 2019-10-20 13:19:00 · 764 阅读 · 0 评论 -
MySQL ON DUPLICATE KEY UPDATE的用法
MySQL ON DUPLICATE KEY UPDATE的用法目录一、用法二、注意点三、例子四、ON DUPLICATE KEY UPDATE引发的问题一、用法如果在INSERT语句末尾使用ON DUPLICATE KEY UPDATE,此时mysql会检查插入行的主键和唯一索引是否存在重复的值,如果存在重复值的行执行UPDATE,否则插...转载 2019-10-06 17:07:19 · 243 阅读 · 0 评论 -
conv函数
conv函数目录 一、概念二、参数三、用例四、拓展一、概念MySQL CONV()将一个数字从一个数字基数系统转换为另一个数字基数系统。转换后,函数返回数字的字符串表示形式。当定义的参数为NULL时,返回值将为NULL。最小基数为2,最大基数为36.如果要转换的基数为负数,则该数字被...转载 2019-10-07 10:11:17 · 17269 阅读 · 0 评论 -
解决库存超卖/超买(事务)的问题
解决库存超卖/超买(事务)的问题 原因:1 超卖出现在修改库存业务的方法中,并不是出现在数据库的更新语句中(mysql的update写操作不能并发执行)2 业务的方法中超卖造成原因是什么,mysql的写操作和读操作可以并发执行,导致多个线程同时修改了一条库存不足的商品解决:事务锁悲观锁(显式锁)select kc from t_m...原创 2019-01-12 21:43:34 · 5440 阅读 · 0 评论 -
隔离级别
隔离级别在Sql标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。READ UNCOMMITTED(未提交读)事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未...原创 2018-07-22 18:47:34 · 193 阅读 · 0 评论 -
MySQL Packet for query is too large 问题及解决方案
MySQL Packet for query is too large 问题及解决方案报错信息:Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1354 > 1024). You can change this value on the serverby sett...转载 2019-09-29 16:25:01 · 376 阅读 · 0 评论 -
MySQL的BENCHMARK()函数
MySQL的BENCHMARK()函数MySQL有一个内置的BENCHMARK()函数,可以测试某些特定操作的执行速度。 参 数可以是需要执行的次数和表达式。 表达式可以是任何的标量表达式,比如返回值 是标量的子查询或者函数。 该函数可以很方便地测试某些特定操作的性能,比如通过测试可以发现,MDS()函数比SHAl()函数要快:mysql>...转载 2019-09-28 21:55:04 · 349 阅读 · 0 评论 -
MySQL批量SQL插入各种性能优化
MySQL批量SQL插入各种性能优化对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。1、一条SQL语句插入多条数据常用的插入语句如:INSERT INT...原创 2019-09-22 19:19:20 · 501 阅读 · 0 评论 -
为什么用JNDI连接数据库
为什么用JNDI连接数据库 转载:http://blog.chinaunix.net/uid-11898547-id-3581175.htmlJNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用...转载 2018-11-07 09:11:36 · 645 阅读 · 0 评论 -
使用JNDI连接数据库 (DataSource)ctx.lookup("java:comp/env/jdbc/DBPool")
使用JNDI连接数据库转载:http://blog.sina.com.cn/s/blog_613963d10100stor.html 创建一个获取connection的类 package com.hstc.db;import javax.naming.Context;import javax.naming.InitialContext;...转载 2018-11-06 09:44:39 · 8572 阅读 · 1 评论 -
MySQL中针对大数据量常用技术:查询优化,数据转移
MySQL中针对大数据量常用技术:查询优化,数据转移 转载:https://blog.csdn.net/zhang2531/article/details/52143578 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了...转载 2018-09-16 14:42:28 · 175 阅读 · 0 评论