![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 54
kobexzf
这个作者很懒,什么都没留下…
展开
-
子查询锁表问题
1 发现insert on duplicate key update (主键或唯一索引相同update) lock wait timeout,此表上一直有锁定2 发现执行了 delete from client_config_report where ip not in(select ip from client_heartbeat_report)针对类似子查询,官网说明如上rc下非锁定读,rr下按next key lock的读锁单个sql本身作为一个事务,锁在事务结束后释放3 不建议使用这样的原创 2021-08-02 14:03:54 · 196 阅读 · 0 评论 -
c3p0
PooledDataSource(ComboPooledDataSource,PoolBackedDataSource) 用户使用的DataSourceC3P0PooledConnectionPoolManager(简称PoolManager)含多个auth(username+password)对应的Pool,基本上用的都是默认authC3P0PooledConnectionPool(简称Pool)ResourcePool(BasicResourcePool,ResourcePoolFactory):原创 2021-04-22 15:55:48 · 356 阅读 · 0 评论 -
DruidDataSource
DruidDataSourceinitialSize minIdle(最小值) maxActive(最大值) poolingCount(池内的) maxActive(借出的)一般来说poolingCount+maxActive和minIdle和maxActive比较,以前有个maxIdle,现在不用了,导致有些和minIdle比较的逻辑有问题我们用connections这个数组,poolingCount就是现在的位置,总是在尾部取放,栈结构Lock,notEmpty和emptyDruidPoole原创 2021-04-20 17:38:16 · 1628 阅读 · 0 评论 -
mysql jdbc driver
核心类:ConnectionImpl StatementImpl MysqlIODriver.connect建立了真实连接并mysql handshake(先获取了服务端信息,后user,password认证)jdbc规范不要求,但mysql driver实现线程安全,每个连接都有一把锁ConnectionPropertiesImpl里有各mysql jdbc url属性prepareStatement客户端开启,客户端每次拼接好sql,发给服务端,服务端不感知,和普通sql执行一样服务端开启,原创 2021-04-15 20:48:52 · 1004 阅读 · 0 评论 -
jdbc异常规范
SQLException:sqlState规范定义的状态,errorCode具体db的返回码,mysql driver根据sqlState返回具体的SQLException的子类(具体见SQLError类)JDK 1.6 - JDBC4(判断是否存在java.sql.NClob类):jdbc4定义了SQLException 的多个子类mysql driver 在jdbc4按子类的实现返回,之前按SQLException的子类返回jdbc4异常类型分析SQLRecoverableException(m原创 2021-04-06 10:37:24 · 90 阅读 · 0 评论 -
聚合/旋转/游标
select b, group_concat(distinct c order by c asc separator ‘:’) result from test group by b;pivoting 行转为列primary key(id,attribute) ,同一id下有多条不同attribute数据,把这几条数据合为一条,用attribute1,attribute2…列来表示unpiv...原创 2019-01-04 15:26:15 · 147 阅读 · 0 评论 -
表
主键:最先定义的非空唯一索引rowid存储结构:表空间段:数据段(leaf node,数据即索引,索引即数据),索引段(non-leaf node ),undo段等区:固定1MB, 存放连续页 ,一般64个16k页,页小了数量就多了。段申请内存先用32个碎片页,然后再申请区。 这样小表开始存储少页(或block)行:innodb row-oriented, 其他引擎或是colum...原创 2018-12-25 16:14:42 · 102 阅读 · 0 评论 -
约束/视图/分区
约束:primary key (索引实现)unique key (索引实现)foreign keyFOREIGN KEY (p_id) references table_name(id) [on delete option ][on update option],innodb 自动给fk列加索引option: 控制当父表行更新或删除时对子表的操作cascade 父删除或更新,子也删除...原创 2018-12-26 11:28:14 · 212 阅读 · 0 评论 -
查询/子查询
逻辑查询处理:11步骤笛卡尔onjoin 添加某些行where 还没分组(分组函数不能用),还未选列(列别名不能用)groupby null在一组cube/rolluphaving 对分组条件进行过滤select 选择需要的列,别名处理distinctorderby 需要有序输出(否则类似从集合中取)null被视为最小值limit 效率不好,考虑应用层缓存物理查询处理优化...原创 2019-01-02 16:48:15 · 174 阅读 · 0 评论 -
联接/集合
性能监控:set @@profiling=1;show profiles;show profile for query 2;show profile block io,cpu for query 2;cross只应用笛卡儿积/inner/outer joinselect …from a,b where a.x=b.x 就是inner joininner join 指定在on和where...原创 2019-01-02 19:53:23 · 108 阅读 · 0 评论 -
mysql注释和各种小tip
/* */ 是注释/*! */ 不是注释,可以执行/*!50100 */ 5.01.00 版本或者更高的版本,才执行set password for root@localhost = ‘123456’;原创 2019-06-11 20:14:13 · 98 阅读 · 0 评论 -
mysql数据类型
tinyint 1 unsigned(0~ 255) signed(-128~127)smallint 2mediumint 3int 4bigint 8float(4字节单精度)double(8字节双精度),非精确,近似数值,浮点数,可能实际存的是一个很接近你输入的数。不加(M,D)就按实际精度保存。decimal(写numeric一样,会转成decimal),确切精度,定点数,字符...原创 2018-12-29 19:44:29 · 136 阅读 · 0 评论 -
参数和文件
用户变量 set @t1=3; select @t1;系统参数(变量):分别6个设置和获取方式,但有些不可设置set global|session(没有的话为session)name=valueset (@@global.|@@session.|@@(这个为session))name=valueselect (@@global.|@@session.|@@(这个为session))name...原创 2018-12-24 21:04:02 · 166 阅读 · 0 评论 -
事务-详解
ACID扁平事务带保存点扁平事务 innodb支持savepoint name; rollback to savepoint name; release savepoint name;回滚到一个早期状态,但事务没结束,别忘了commit or rollback链事务 innodb支持,考虑到保存点易失,要是能持久化部分就好了,将提交事务和开始另一事务原子化嵌套事务 叶子节点负责......原创 2018-12-28 18:54:50 · 104 阅读 · 0 评论 -
entity sql (null)
insert entity有null字段,可忽略(性能更优)update entity有null字段1 null-null 忽略2 not null-null 必须要set了,但是很难区分,可以entity内记录更新的属性(列)了...原创 2018-11-29 17:09:53 · 191 阅读 · 0 评论 -
mysql存储过程触发器
SQL 语句集,一次编译后反复调用,CREATE PROCEDURE sp_name(参数形式 参数名 参数类型)BEGIN…END参数形式 in out inout(传入后,在内部可被修改,又传出)call sp_name(57)链接https://www.cnblogs.com/mark-chan/p/5384139.html触发器是一种特殊类型的存储过程,事件触发(如表进行诸...原创 2018-11-29 17:46:29 · 265 阅读 · 0 评论 -
数据库乐观锁
表中留一列:版本号(int),时间戳读取数据后,修改数据,更新时做版本比较,相同则更新并版本+1不同放弃SELECT use_count, version FROM table WHERE id=123456 AND use_count < 1000;UPDATE table SET version=4, use_count=use_count+1 WHERE id=123456 A...原创 2018-11-29 18:17:11 · 355 阅读 · 0 评论 -
sum
sum(money),无记录,返回null只有null记录,返回null混合null和有值记录,忽略null记录最好 ifnull(sum(money),0)原创 2018-12-04 18:09:35 · 90 阅读 · 0 评论 -
default not null
default只在insert的时候没有显式赋值的时候生效,若insert时赋值null或update设为null 这时候notnull的作用就显示出来了add column 不会报错,若有default 则新列为default,若无default 为null,若无default且有not null 这时新列有个固定默认值,如varchar为空字符串...原创 2018-12-20 10:33:18 · 1058 阅读 · 0 评论 -
索引-详解
B+tree:页双向链接,数据都在叶子节点上Cardinality: 我们一般高选择性数据建索引, show index from table_name 查看CardinalityCardinality表明不重复数据的预估值,Cardinality/记录数应尽量接近1Cardinality 第一不实时更新,第二更新也是采样获取,不准确细节:覆盖索引(走secondary后不走primar......原创 2018-12-26 17:39:31 · 86 阅读 · 0 评论 -
mysql概要
数据库:文件实例:进程(多个线程,内存区),操作文件,多个实例可操纵一个数据库存储引擎:基于表,不同表可能引擎不一样Innodb(默认引擎): 支持事务,oltp,行锁,支持外键,非锁定读(MVCC),表可单独放一个ibd文件内,默认repeatable read(next key locking 避免幻读),insert buffer,double write, adaptive has...原创 2018-12-21 19:00:37 · 139 阅读 · 0 评论 -
Innodb 详解
线程:Master Thread :脏页刷新,合并insert buffer,回收undo页IO Thread:aio(async io), 处理aio的callback(比如io完成了该怎么做啊),分别有insert buffer thread(1),log thread(1),read thread(4),write thread(4)purge thread:回收undo页(事务提交后...原创 2018-12-21 19:50:15 · 1496 阅读 · 0 评论 -
锁具体说明
latch 多线程访问内存数据结构,时间短,无死锁检测,有mutex和rwlock两种(类似java的synchronized,代码中的)使用show engine innodb mutex;lock 事务访问数据库对象,一般commit或rollback释放,有死锁检测处理row/page/table,共享S/排它X(删除或更新), 意向(IX,IS,指对小粒度加锁,对大粒度元素加意向锁)......原创 2018-12-27 18:09:40 · 150 阅读 · 1 评论 -
Spring, jdbc, mysql tx
设定spring isolationlevel 设定了jdbc isolationlevel ,对应设定了 mysql session级别 的isolationlevel,并后面设回来mysql> SET GLOBAL sort_buffer_size=value;mysql> SET @@global.sort_buffer_size=value;mysql> SET S...原创 2018-11-23 16:14:07 · 108 阅读 · 0 评论