
mysql
平静不绝望
ALOHA HEJA HE
-
原创 【Mysql】意向锁
1 意向锁为什么要存在?意向锁主要是解决:表级锁 和 行锁(其他排它锁如间隙锁,next key gap锁)共存问题;2 举例说明事务A锁住了表中的行锁。事务B申请整个表的写锁,表级锁。为了保证A释放后,B才能获取锁,如何让B事务堵塞等待呢?数据库要怎么判断这个冲突呢?1:判断表是否已被其他事务用表锁锁表2:判断表中的每一行是否已被行锁锁住。但是2这一步时间复杂度实在是太高了,因为需要遍历整个表。于是出现了 意向锁。在意向锁存在的情况下,事务A必...2021-02-24 09:35:0114
0
-
原创 【Mysql】quick review 分布式事务 存储 redo undo all-in-one
1 存储引擎存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated1.1 InnoDB(B+树):InnoDB 底层存储结构为B+树, B树的每个节点对应innodb的一个page,page大小是固定的, 一般设为 16k。其中非叶子节点只有键值,叶子节点包含完成数据。适用场景: 经常更新的表,适合处理多重并发的更新请求。 支持事务。 可以从灾难中恢复(通过 bin-log 日志等) 外键约束。只有他支持外键2021-02-19 18:40:1048
1
-
原创 mybatis中大于等于小于等于 在注解中的写法
使用:原符号 < <= > >= & ' "替换符号 < <= > >= & ' "例如:sql如下:where enable = #{enable} and userCreateDate >= #{beginDate} and...2020-10-24 14:18:27109
0
-
原创 【mybaits】占位符 mysql 注入 #{} ${} 区别 - 源码
@Update(" update test_zw_sql set name = '${updateName}' where id = ${id}")int updateTestAppendStr(@Param("updateName") String updateName, @Param("id") Integer id);@Update(" update test_zw_sql set name = #{updateName} where id = #{id}")int updateTestPa.2020-09-26 18:29:1660
0
-
原创 【mysql】--高性能索引策略(359)
如何高效的使用索引:1 独立的列-->将单独列放在比较符号的一侧; where acrot_id + 1 = 5; error2 索引的选择性: 不重复的索引值 : 数据表记录总数 ,唯一索引的选择性是1; 注意: 计算不同前缀长度的选择性 方法 select count(distinct left(city,7)) / count(*) as sel12020-08-16 15:13:0085
0
-
原创 我们到底该不该使用 force index()索引?
工作中遇到一个棘手的问题,一个即将被丢弃的系统 有这样的一个查询select * fromtb_O force index(idx_create_time) inner join tb_task_Ainner join tb_task_Binner join tb_Con ...where tb_O.create_time 注意上面四个联合join时,现2017-08-22 19:46:538122
0
-
原创 【知识库】--Mysql InnoDB数据库事务四种隔离级别(156)
Mysql InnoDB数据库 数据库事务隔离级别 1 read uncommitted 【no commit 】 2 read committed 【until other commit】 3 repeatable read 【until self commit】 4 serializable 【lock any read 】 参考: http://blog.csdn.net/wud2017-03-29 21:30:01321
0
-
转载 Mysql -- mysql事务和锁InnoDB
http://www.cnblogs.com/zhaoyl/p/4121010.html2017-09-13 22:38:40138
0
-
原创 【mysql】--MVCC 多版本控制
InnoDB的mvcc,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存行的过期时间(删除时间)。存储的并不是实际的时间,而是系统版本号。每一个新的事物,系统版本号都会递增。 事物开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。系统版本号:sysNoXSelect: 1 选择版本早于当前事务本版的数据行; 22017-12-10 20:22:40787
0
-
原创 jenkin 发布失败 没有日志
发布失败1: 例如数据库字段缺失等,导致程序无法启动发布失败2:机器配置导致失败例如GC_PARAM="-Xmx4g -Xms4g -XX:G1HeapRegionSize=2m"但是机器配置没有4G那么多空间! 改成适合大小即可...2018-12-18 19:49:4787
0
-
原创 【mysql】批量更新/分组查询语句 CASE WHEN END 语法
举例1UPDATE biz_tableSET biz_tags = CASE biz_idWHEN 2408466 THEN '["不限"]'WHEN 2408533 THEN '["不限"]'ENDWHERE biz_id IN (2408466,2408468)举例 2SELECT batch, count(*) as "领取量" FROM (select ...2019-05-26 09:56:54173
0
-
原创 数据库超时--TIME_WAIT数量骤降,CLOSE_WAIT增加(四次握手)系统IO wait增加 --导致线上故障(274)
1 TCP/IP握手协议2 出现问题时线上监控2017-07-28 17:53:13434
0
-
原创 【技能库】--mysql 索引失效 force index也失效-- 原因解决方案(256)
查看执行时走的索引:explain SELECT count(*)FROM tb_taskWHERE create=0 and create_time 结果:+----+-------------+-------------+-------+---------------------------------------------+-----------------2017-07-10 18:20:122729
1
-
原创 【知识库】--Mysql InnoDB 行锁实现 和 表锁实现(205)
两个事务,使用一个主键作为更新条件时,一定会有一个成功一个失败! 上了行锁。事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。一致性(Consistent):在事务开始和完成时,数据都必2017-05-17 21:58:16941
0
-
原创 【知识库】为什么把占空间的字段单独存一张表--mysql表设计(146)
前提:mysql数据库&InnoDB引擎 InnoDB使用了B+树&聚簇索引 B+树: 直接上图: 聚簇索引: 所谓聚簇索引,就是指主索引文件和数据文件为同一份文件,聚簇索引主要用在Innodb存储引擎中。在该索引实现方式中B+Tree的叶子节点上的data就是数据本身,key为主键,如果是一般索引的话,data便会指向对应的主索引。解释blog题目: 因为InnoDB的ta2017-03-19 11:15:51800
1
-
原创 【技能库】--mybatis 批量插入(149)
<insert id="insertList" parameterType="java.util.List"> INSERT INTO <include refid="tableName"/> (a,b) VALUES <foreach collection="list" item="item" index="index" separa2017-03-22 21:10:01317
0
-
原创 【知识库】--mysql 表字段修改操作(193)
MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列查看表的字段信息:desc 表名;查看表的所有信息:show create table 表名;添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);添加外键约束:alter table 从表 add constraint 外键2017-05-04 09:45:16588
0
-
原创 Caused by: java.sql.SQLException: Column count doesn't match value count at row 1
Caused by: java.sql.SQLException: Column count doesn't match value count at row 1原因:一般是语法拼写错误,漏掉一列或者少分隔符。2017-05-14 16:50:14451
0
-
原创 Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Availabl
Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]原因:设置属性时任何一个字段名字出现错误都会对应不上mysql的column 报出上面的错误2017-05-14 16:51:0110001
0
-
翻译 【知识库】--mysql Shared and Exclusive Locks 共享锁和排它锁(195)
InnoDB implements standard row-level locking where there are two types of locks, shared (S) locks and exclusive (X) locks.A shared (S) lock permits the transaction that holds the lock to read a row.2017-05-06 07:39:11648
0
-
翻译 【技能库】--mysql Introduction(195)
Mysql数据库A database is a separate application that stores a collection of data. Each database has one or more distinct APIs for creating, accessing, managing, searching and replicating the data it hol2017-05-06 15:15:46271
0
-
原创 【知识库】--mysql 不同系统的安装(195)
1 下载 https://www.mysql.com/downloads/ https://dev.mysql.com/downloads/ 2 linux [root@host]# rpm -i MySQL-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-client-5.0.9-0.i386.rpm [root@2017-05-06 16:33:09450
0
-
翻译 【知识库】--mysql COMMIT and ROLLBACK --AUTOCOMMIT(196)
COMMIT and ROLLBACK: These two keywords Commit and Rollback are mainly used for MySQL Transactions.When a successful transaction is completed, the COMMIT command should be issued so that the changes t2017-05-07 14:28:13451
0
-
原创 【技能库】--mysql indexes 索引操作(195)
A database index is a data structure that improves the speed of operations in a table. Indexes can be created using one or more columns, providing the basis for both rapid random lookups and efficient2017-05-07 15:19:05282
0
-
原创 【知识库】--mysql engines MyISAM vs InnoDB(146)
MyISAM vs InnoDB MyISAM:不支持事务,不支持行级锁; 支持 fullindex indexing ; 最多 64 keys per table; 不支持外键; 支持table level locking; three files: formate file (store table structure), data file store rows,index fi2017-03-19 10:24:48298
0