MySQL
Forest24
keep learning...
展开
-
MySQL之索引优化的一些细节
1.当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层 2.尽量使用主键查询,而不是其他索引,因为主键查询不会触发回表查询 3.union all,in,or都能够使用索引时,但是推荐使用in 4.范围列可以用到索引,范围条件是:<、<=、>、>=、between,范围列可以用到索引,但是范围列后面的列无法用到索引,索引最多用于一个范围列 5.强制类型转换会全表扫描 6.更新十分频繁,数据区分度不高的字段上不宜建立索引。更新会变更B+树,更新频繁的原创 2020-05-10 17:09:49 · 168 阅读 · 0 评论 -
MySQL之锁机制
1.MySQL锁的基本介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储..原创 2020-05-10 12:25:01 · 270 阅读 · 0 评论 -
MySQL之分区表
1.分区表的底层原理 分区表由多个相关的底层表实现,这个底层表也是由句柄对象标识,我们可以直接访问各个分区。存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个完全相同的索引。从存储引擎的角度来看,底层表和普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。 分区表的操作按照以下的操作逻辑进行: select查询 当查询一个分区表的时候,分区层先打开并锁住所有的底层表,优化器先判断是否可以.原创 2020-05-10 11:08:10 · 171 阅读 · 0 评论 -
MySQL行转列、列转行
1.行转列 建表语句如下: CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(20) DEFAULT NULL, `COURSE` varchar(20) DEFAULT NULL, `SCORE` float DEFAULT '0', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAUL...原创 2020-05-09 21:55:26 · 181 阅读 · 0 评论 -
前缀索引实例说明
有时候需要索引很长的字符串,这会让索引变的大且慢,通常情况下可以使用某个列开始的部分字符串,这样大大的节约索引空间,从而提高索引效率,但这会降低索引的选择性,索引的选择性是指不重复的索引值和数据表记录总数的比值,范围从1/#T到1之间。索引的选择性越高则查询效率越高,因为选择性更高的索引可以让mysql在查找的时候过滤掉更多的行。 一般情况下某个列前缀的选择性也是足够高的,足以满足查询的性...原创 2020-05-03 21:55:56 · 198 阅读 · 0 评论 -
回表,覆盖索引,最左匹配,索引下推
回表: 假设现为name列建立索引,此时最后面的节点存放的是主键。当我们现在用name做查询的时候,第一次会查找name列的B+树,根据name列的B+树的叶子节点取到主键,再根据主键去查主键的B+树,从中取出整行记录,这就叫回表。 覆盖索引: select id from t_user;(此时就是覆盖索引) 因为叶子节点就存在id主键,不需要再从主键的B+树里获取数据,因此就没了回表的过...原创 2020-05-03 18:30:53 · 434 阅读 · 0 评论 -
MySQL执行计划
在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。 官网地址:https://dev.mysql.com/doc/refman/5.5/en/explain-output.html 1、执行计划中包含的信息 ...原创 2020-05-03 16:27:45 · 140 阅读 · 0 评论 -
mysql的事务四个特性以及事务的四种隔离级别
一、事务的四个特征 1、原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 2、一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 3、隔离性(Isolati...原创 2019-05-16 22:15:05 · 307 阅读 · 0 评论