
MySQL
文章平均质量分 83
MySQL数据库相关
weixin_43751710
这个作者很懒,什么都没留下…
展开
-
MySQL数据读取机制(MySQL从磁盘读数据为什么那么快)
Buffer Pool用于缓存最近访问的数据页(数据页通常为16KB大小),以减少磁盘I/O操作。当数据被修改时,InnoDB不会立即将修改后的数据写入磁盘,而是先修改Buffer Pool中的数据页。原文链接:https://blog.csdn.net/x1234w4321/article/details/144077925。MySQL索引采用B+树结构:数据有序存储,减少磁盘寻道次数(3-4 层树高可支撑千万级数据)。假设查询 SELECT * FROM users WHERE id = 5000;转载 2025-04-27 13:34:59 · 24 阅读 · 0 评论 -
MySQL索引结构(B+树、聚簇索引)以及聚簇索引、主键索引、唯一索引三者区别
参考:http://blog.jobbole.com/24006/基本定义MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.注意:索引是一种数据结构!索引的作用——查询数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search)...转载 2019-06-05 08:27:04 · 1960 阅读 · 0 评论 -
覆盖索引
参考:https://blog.csdn.net/qq_15037231/article/details/87891683什么是覆盖索引覆盖索引其实不是一种索引的类型,而是指查询时,需要查询出的列需要被使用到的索引覆盖。百度百科:就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。实例举个例子来说表中有150多万的数据,也已经建立...转载 2019-06-13 21:32:58 · 272 阅读 · 0 评论 -
MySql的CONCAT关键字(group by 时需要的group_concat)
https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pcCONCAT连接字符串:模糊查询的匹配条件中使用anda.front_brand_name like CONCAT('%',#{frontBrandName,jdbcType=VARCHAR},'%')group_concat()函...转载 2019-11-13 16:59:59 · 946 阅读 · 0 评论 -
MySQL主从
MySQL主从转载 2020-03-17 11:23:14 · 230 阅读 · 0 评论 -
MySQL优化策略(待完善)
MySQL语句基础优化策略:第一、不使用select * ……这样的语句。老老实实将需要的字段写出来,如select name……这样的,除非是整张表的数据字段都要使用。第二、永远不要讲or作为顶层条件。有or的放在括号()里,顶层条件必须用and。如:where a=1 and b=3 and … or ccc=33 … , 这种是等于 where ( a=1 and b=3 and …...转载 2019-06-06 20:01:52 · 161 阅读 · 0 评论 -
MySQL查询某个时间段内的字段,使用的日期是String类型,但数据库中是时间戳
MySQL查询某个时间段内的字段,使用的日期是String类型在Java中,想要实现对数据库中的特殊查询——查询某个时间段内的字段,但是传入的日期值是String型,而数据库中的日期是时间戳……可以使用如下方法:比如: ’ 2019-05-14 00:00:00 ’ 到 ’ 2019-05-16 24:00:00 ’ ,且只想直接用这个字符串,不想转换成时间戳等等。可以这样:1、直接使用...转载 2019-05-16 20:30:21 · 6603 阅读 · 1 评论 -
B+树索引和哈希索引的区别
https://www.cnblogs.com/heiming/p/5865101.html下面是MySQL中建表时创建索引CREATE TABLE t(aid int unsigned not null auto_increment,userid int unsigned not null default 0,username varchar(20) not null default ...转载 2019-07-31 22:25:09 · 274 阅读 · 0 评论 -
MySQL字符串与时间戳的转换
在Java中,想要实现对数据库中的特殊查询——查询某个时间段内的字段,但是传入的日期值是String型,而数据库中的日期是时间戳……可以使用如下方法:数据库的有字符串转换为时间戳的函数unix_timestamp(?)。public int countNum(String startTime, String endTime) { String SQL = "SELECT left(c...转载 2019-05-06 20:13:47 · 1623 阅读 · 0 评论 -
为什么MySQL的字段尽量为not null
使用not null的好处节省空间,需要一个额外字节作为判断是否为NULL的标志位(空值不占空间)。影响索引,Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂,索引的效率会下降很多。且对表索引时不会存储NULL值的。NULL不能用 = 来判断,必须要is null等函数进行判断,应用不方便...转载 2020-03-03 16:32:20 · 324 阅读 · 0 评论 -
建表时指定为bTree的索引
CREATE TABLE `supplier_activity` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', `activity_id` bigint(20) DEFAULT NULL COMMENT '所属活动id', PRIMARY KEY (`id`), KEY `idx_activity_id` (`a...转载 2019-12-15 21:46:38 · 1217 阅读 · 0 评论 -
MySQL中的distinct含义
https://www.cnblogs.com/koal/p/4526633.htmldistinct的意思是不重复,可以用在统计里转载 2019-10-27 17:37:52 · 900 阅读 · 0 评论 -
MySQL引擎
数据库索引分类以及引擎分类转载 2020-03-20 15:03:12 · 107 阅读 · 0 评论 -
MySQL的锁与事务详解
也就是说,在前面举例幻读问题中,当T1要对ID>2的用户做修改余额,锁定3、9这两条行数据时,默认会加的是临键锁,也就是当事务T2尝试插入ID=6的数据时,因为有临建锁存在,因此无法再插入这条“幻影数据”,也就至少保障了T1事务执行过程中,不会碰到幻读问题。MySQL的锁机制与索引机制类似,都是由存储引擎负责实现的,这也就意味着不同的存储引擎,支持的锁也并不同,这里是指不同的引擎实现的锁粒度不同。一个事务已获取共享锁,当另一个事务尝试对具备共享锁的数据进行读操作时,可以加共享锁,可正常读;转载 2020-03-26 10:24:40 · 230 阅读 · 0 评论 -
MySQL最左原则及索引对读写的影响
MySQL索引对读写的影响我们知道MySQL的索引是B+树的数据结构,但是MySQL的索引到底是如何影响到数据库的效率的呢?主要有两点:一、减慢了写入的速度几乎所有的人都知道索引可以加快查询(也就是读出)的速度,但并不是所有的人都知道,索引会减慢写的速度(比如之前的我……)。之前说过,MySQL的索引是B+树的数据结构,这样的结构可以有效的提升查询的速度,因为它是有序的,而有序的平衡树查找...转载 2019-06-06 19:52:43 · 1235 阅读 · 0 评论 -
死锁的形成及解决方法(如何排查死锁)
死锁的解决方法产生死锁的四个必要条件:(1) 互斥条件:资源不能共享,一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。1.安全序列我们首先引入安全序列的定义:所谓系统是安全的,是指系统中的...转载 2019-05-20 20:11:19 · 1403 阅读 · 0 评论 -
数据库三范式与反三范式
第一范式字段不可分,保证字段的原子性,字段不能是集合、多个值。下面第二行是违反第一范式的:第二范式有主键,非主键字段依赖主键。第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要我们设计一个主键来实现(这里的主键不包含业务逻辑)。即满足第...转载 2020-03-25 15:41:37 · 641 阅读 · 0 评论 -
MySQL的batch模式
MySQL的batch模式MySQL的batch模式,其实也就是批处理模式。它比一条条插入的效率高多了。这是从网上copy下来的例子:首先使用普通的方式插入100万条数据,使用时间81948毫秒程序如下:public class Test { public static void main(String[] args) throws ClassNotFoundException,...转载 2019-06-06 20:03:30 · 4569 阅读 · 0 评论 -
MySQL中的 unsigned
https://www.cnblogs.com/qiantuwuliang/archive/2009/11/22/1608157.htmlunsigned 为“无符号”的意思unsigned 既为非负数,用此类型可以增加数据长度!例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2unsign...转载 2019-10-27 17:20:39 · 168 阅读 · 0 评论 -
SQL优化案例
原SQL如下:selectb.id, a.b_pin, a.c_pin, b.vender_id, b.fx_status, b.fx_start_time, b.fx_end_time,a.store_name, a.vender_company_name, a.store_addr_det, a.store_business_type,a.store_type_cd, a.store_...原创 2019-11-11 22:00:13 · 191 阅读 · 0 评论 -
mysql分库分表
分库分表mycat转载 2020-03-17 10:18:09 · 212 阅读 · 0 评论 -
事务隔离
转自:https://www.cnblogs.com/fjdingsd/p/5273008.html四大特性本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样...转载 2019-06-13 21:12:58 · 145 阅读 · 0 评论 -
查找MySQL数据库user表中是否存在ID=1的记录
查找MySQL数据库user表中是否存在ID=1的记录如果直接查找该字段的值,会报错说该字段不存在(null)所以应当按如下方式查找:(查找该ID的个数)String SQL = "select count(*) from user where phone_id=?"; count=jdbcTemplate.queryForInt(SQL,new Object[] {phone_id})...原创 2019-05-02 17:05:02 · 5415 阅读 · 0 评论 -
数据库中时间戳与java中的时间类型、String类型的转换
java.sql.Timestamp cannot be cast to java.lang.Longjava.util.Date与的java.sql.Timestamp互转java.sql.Timestamp---->java.util.Date(二者是父子关系,可以直接赋值,自动转换)/** * 将java.sql.Timestamp对象转化为java.util.Date对象 ...转载 2019-05-20 20:30:54 · 7971 阅读 · 0 评论