
A1-mysql
文章平均质量分 65
mysql
乐之者v
快乐编程,一生编程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
sql优化--mysql隐式转换
如果是比较简单的数字,比如 字符串型的字段应该传 ‘1’ ,结果传了 1, 导致隐式转换,不走索引,那直接将 1 修改为 ‘1’ 就可以了。比如数据表中 user_status 的字段类型是字符串, 如果参数传入了一个整型数字,这样会有 隐式转换。在SQL中,隐式转换是数据库自动进行的类型转换,隐式转换可以帮助我们处理不同类型的数据。比如,数据表的字段是字符串类型的,传入一个整型的数据,也能够运行sql。CAST( ‘2’ AS SIGNED ) ,表示将’2’转换为数字。原创 2024-12-16 23:05:45 · 411 阅读 · 0 评论 -
mysql 使用时需要注意的
数据表设计,详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/133068084。详情见: https://cloud.tencent.com/developer/article/2285766。MYSQL分页查询时没有用ORDER BY,数据量大的时候,有可能会出现数据重复。如果没有默认值,必须设置一下历史数据,用UPDATE更新历史数据中新增字段的值。因为历史数据是不存在这个新增字段的,查询做字段映射时会报错。join 越多,查询越慢。原创 2024-10-30 15:54:02 · 279 阅读 · 0 评论 -
锁等待超时 com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded;
在出现锁等待时,会根据参数 innodb_lock_wait_timeout(默认50s)的配置,判断是否需要进行timeout的操作,如果等待时间超过了设置的时间就会报错。当等待时间超过innodb_lock_wait_timeout设置值时,会产生“LOCK WAIT”事务。innodb_lock_wait_timeout 默认为50,可以尝试调大一些,等待时间变长,就不会触发锁等待超时。Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花的时间;大事务转成多个小事务。原创 2024-10-09 11:48:07 · 847 阅读 · 0 评论 -
Mysql自增id、uuid、雪花算法id的比较
雪花算法生成的 id,包括 符号位(1位),时间戳( 41位) ,数据中心ID (5位), 机器ID(5位), 序列号(12位)。序列号 (12位) :对于某个机器/进程, 每生成 一个ID,序列号就加1,这个数字每毫秒开始时都会被重置 为0。雪花id 的生成依赖于机器的时钟,如果时钟回拨或者时钟不同步,可能会导致生成的id不唯一。雪花id 占用的存储空间较大,通常为64位,如果作为主键,会占用更多的存储空间。雪花算法,可以生成唯一id,id 只包含数字, 长 64位。1.不适用于分布式系统。原创 2024-05-24 23:47:00 · 1043 阅读 · 0 评论 -
mysql的慢sql优化
all: 表示全表扫描, 这个类型的查询是性能最差的查询之一. 通常来说, 我们的查询不应该出现 ALL 类型的查询, 因为这样的查询在数据量大的情况下, 对数据库的性能是巨大的灾难. 如一个查询是 ALL 类型查询, 那么一般来说可以对相应的字段添加索引来避免.range: 表示使用索引范围查询, 通过索引字段范围获取表中部分数据记录. 这个类型通常出现在 =, , >, >=,原创 2024-02-07 23:43:56 · 1900 阅读 · 6 评论 -
Mysql分区表
查询日期范围为 03-15 到 04-05 的数据,可以先拆成 03-15到03-31, 以及 04-01到 04-05的查询语句。假如一张表有一千万条数据,拆分成20个分区,在分区数据均匀的情况下,每个分区就只有大概50万数据。分区可以将一张表从物理层面根据一定的规则将数据划分为多个分区,多个分区可以单独管理,提升效率。查询全表,就需要在1千万数据中扫描。跨分区查询,如果没有拆分成多个分区范围去查询,就会扫全表,查询时间会比久。对于按月分区来说,范围分区是最常见的选择,因为它可以根据日期的范围来分区。原创 2023-12-03 15:47:26 · 785 阅读 · 0 评论 -
mysql数据表设计
TEXT类型,不可以有默认值。日期时间类型,用 DATETIME 或者TIMESTAMP ,如果不需要支持多个时区,一般用 DATETIME. 因为TIMESTAMP 的最大值是2038年。VARCHAR的DEFAULT默认值,最好设置成’',也就是 DEFAULT ‘’,而不是NULL。如果用 is_delete, 数据映射成对象后, is开头的属性,进行rpc调用时,可能会有序列化的问题。涉及新增或变更操作记录的,必须有 create_time字段和update_time字段 ,方便定位问题。原创 2023-11-01 23:18:03 · 284 阅读 · 0 评论 -
mysql分库分表 sharding-jdbc 3.0的代码实现
一、依赖包SpringBoot 用的是 2.0.6.RELEASE 版本。<dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> ...原创 2023-06-29 23:29:00 · 154 阅读 · 0 评论 -
实践理解mysql的联合索引
B+树mysql索引的数据结构最常见的是B+树。在B+树中,所有数据记录都是放在同一层的叶子节点上,并且是按键值大小顺序存放的。有序的存放比无序的存放,查询速度更快。B+树的中间节点只存放指向下一层节点的指针,这样能让查询更快,叶子节点存储的数据更多。B+树的高度一般都在2-4层,也就是说查找某一键值的行记录时,最多只需要2到4次IO。联合索引联合索引,是指将表上的多个列作为一个索...原创 2021-06-10 23:46:00 · 281 阅读 · 0 评论 -
mysql查出来的时间跟数据库相差13/14小时
背景mysql查出来的时间跟数据库相差13/14小时,写入的时间跟数据库也相差13/14小时。问题原因查看时区:在mysql中执行以下命令:SHOW VARIABLES LIKE '%time_zone%';查询结果如下:可以看到时区使用的是 CST,而 CST 是一种混乱的时区。它可以有多种表现:美国中部时间 Central Standard Time (USA) UTC-...原创 2021-11-15 22:22:00 · 146 阅读 · 0 评论 -
实践理解Mysql事务隔离级别之可重复读
可重复读Mysql的事务隔离级别,默认是可重复读(repeatable-read)。以下通过具体的sql操作去理解可重复读。建表CREATE DATABASE test;USE test;CREATE TABLE `t_order` ( `fid` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键,自增id', `forder_id`...原创 2019-12-23 17:21:00 · 51 阅读 · 0 评论 -
Mysql常见的数据表类型
明细表明细表/详情表比较常用。一般会有一张带有 id 的主表,比如 tt_order,主键为 id,字段比较少。明细表/详情表 tt_order_detail ,存放了大量的明细字段,有一个字段 order_id,通过这个字段去关联主表。关系表比如现在有一张用户表 tt_user,还有一张角色表 tt_role,这时可以设计一张 用户角色关系表 tt_user_role。常见的关系有一...原创 2023-02-28 23:46:00 · 127 阅读 · 0 评论 -
mysql常用语句及关键字
一、常用sql语句注意,关键字和函数最好大写,字段和表名小写,这样很容易区分。1.创建数据库t_userCREATE DATABASE t_user;2.删除数据库t_userDROP DATABASE t_user;3.使用数据库t_user: USE t_user;显示数据库中的表: SHOW TABLES;数据表命名表名的命名规范为表名可以用 t_ 、tb_的前缀,或者是业...原创 2018-05-16 11:09:00 · 324 阅读 · 0 评论 -
mysql 数据不存在则插入,存在则更新
mysql 数据不存在则插入,存在则更新,可以用 INSERT ON DUPLICATE KEY UPDATE实现。INSERT ON DUPLICATE KEY UPDATE 不可以和WHERE一起使用,使用INSERT ON DUPLICATE KEY UPDATE ,需要先创建唯一索引。当数据表中,不存在唯一索引的字段与要插入数据相同的值时,就会插入INSERT INTO的数据,否则就...原创 2023-03-15 23:28:00 · 3091 阅读 · 0 评论 -
mysql报错:Data too long for column ‘‘
问题描述Data too long for column ''解决方法明显是数据表字段太短,插入数据长度过长导致的。第一种解决方法:增大字段长度:ALTER TABLE tt_accident CHANGE safe_deal_account safe_deal_account VARCHAR(1000) DEFAULT '' COMMENT '字段注释';第二种解决方法:如果V...原创 2022-06-27 22:43:00 · 2108 阅读 · 0 评论 -
Mysql,重复字段只取其中一行
Mysql去重,可以通过group by和子查询实现。Mysql,重复字段只取其中一行。如下格式 : select 字段 from [表] where 其他字段 in (select 函数(其他字段) from [表] group by 相同字段) 示例如下:从t_user表中,取出 user_name字段相同的记录中,id最大的那一行数据。select ...原创 2018-06-08 11:31:00 · 555 阅读 · 0 评论 -
mysql分组GROUP BY常用sql
数据分组 GROUP BYGROUP BY可以根据一个或多个字段进行分组。比如,根据prod_id分组:SELECT prod_id ,user_idFROM productsGROUP BY prod_id注意:1.GROUP BY可以包含多个列。比如GROUP BY prod_id,user_id ;2.GROUP BY如果分组列中具有NULL值,则NULL会作为一...原创 2019-01-17 19:02:00 · 228 阅读 · 0 评论 -
mysql的IN查询优化
mysql的IN里面的数量太大,比如大于1千时,查询的性能就会差很多。有以下的解决方法。解决方法一:拆分IN的数量IN 数量超过1千,就拆成多条 sql, 每条sql的IN数量不超过1千。用OR或者UNION进行SQL改写。也可以使用 Java写代码,把 IN 数量进行拆分,每条sql的IN数量不超过1千。多次执行。比如使用 IN 的sql 是SELECT 字段1 FROM 表名 ...原创 2023-06-23 12:42:00 · 6624 阅读 · 0 评论 -
记一次Mysql事务隔离级别的坑
最近在写代码调试时,遇到了一个问题。遇到问题具体操作如下:1.调用方法A,并且方法A加上了@Transactional事务注解。2.在方法A内部,查询并更新某个字段F的值。3.处理其他逻辑。4.查询并打印日志,记录关键字段的值,包括字段F。5.方法A结束。由于刚刚接手这块代码,而且这个方法又写得很长,所以很多逻辑都没法细看,只能慢慢调试。我在第4步打了断点,调试时查看日志,感觉...原创 2019-09-30 00:26:00 · 59 阅读 · 0 评论 -
《Mysql技术内幕》读书笔记
第一章 MySql存储引擎1.Innodb存储引擎支持事务,其特点是行锁设计、支持外键。Innodb是Mysql默认的存储引擎。2.MyISAM存储引擎MyIsam存储引擎不支持事务和表锁设计,Myisam也不支持外键,但是支持全文索引。第五章 索引与算法1.常见的索引:B+树索引、全文索引、哈希索引。2.B+树,是通过二叉查找树,再由平衡二叉树,B树演化而来。二叉查找树二叉...原创 2019-10-16 10:58:00 · 66 阅读 · 0 评论