left_join时on后多条件AND

一、left join的ON中多条件AND

1)left join的on条件一般只写一个主键关联的字段,例如:

1
SELECT * FROM product LEFT JOIN product_details ON product.id = product_details.id;
阅读更多

InnoDb死锁分析

mysql8.0增加了performance_schema.data_locks,可以查看Innodb锁状态:

1
2
SELECT ENGINE_TRANSACTION_ID trx_id,INDEX_NAME,LOCK_TYPE,LOCK_DATA,LOCK_MODE,LOCK_STATUS 
FROM performance_schema.data_locks;
阅读更多

分库分表

一、分库分表概念

首先,需要指出的是分库分表会带来更高的复杂度,涉及分布事务,跨库联表,性能下降,配置复杂等问题,不到万不得以不要轻易使用。另外,使用分库分表依据评估3年内的数据量及数据增长趋势,来提前进行分库分表规划,而不是对已有的生产库进行临场变动。

1. 分库分表的原因
阅读更多

Mysql对Null的判断

Mysql数据库中的Null是一个特殊的存在,表示该记录没有值,不同于空(’’)和0;
1)应该使用IS NULL或者IS NOT NULL来判断
2)禁止使用<>, <, >, =去检测NULL,因为其结果集永远是空;

阅读更多

Mysql优化

一、filesort

filesort用于order by或group by语句,要求返回的结果集有序或分组。如果结果集不大则完全可以在内存中排序,否则需要借助磁盘来完成排序。

阅读更多

explain

image.png

mysql5.7以上版本在查看explain时需关闭衍生表优化:set session optimizer_switch='derived_merge=off',否则会隐藏衍生表的信息;

阅读更多

MVCC的InnoDB实现

MVCC是为了保证事务的非阻塞读,提高并发性的一种机制。目前有两种主流实现;

前置问题

阅读更多

Mysql_InnoDB锁

Mysql有多种存储引擎,他们的锁机制也不尽相同。例如MyISAM不支持行锁只有表琐,所以本文主要讨论InnoDB引擎的锁机制。

一、前置问题

阅读更多