后端
瑶瑶乐1117
一个努力学习大数据技术的小学生
展开
-
Java多线程高并发锁的学习
锁的分类: 公平锁和非公平锁: 公平锁:见之知意,对于每个申请锁的线程都是公平的,按照申请锁的顺序来获取进入锁内的权限。 非公平锁:不按照顺序来获取锁,可能后申请的在先申请的线程之前获取锁,有可能会造成优先级混乱或者饥饿现象。 synchronized就是一种非公平锁 可重入锁 如果一个线程在外层方法已经获取锁了,那么在内层方法也默认是已经获取锁,可避免死锁。 独享锁和非独享锁 同样见名知意,独享锁一次只能被一个线程所获取,可以执行锁内代码;共享锁就是一次可以被多个线程共享。 其中,synchronized原创 2021-02-04 21:21:14 · 142 阅读 · 0 评论 -
慢查询分析
mysql默认是不开启慢查询日志的,如果不是为了优化,建议不要开启 查看慢查询日志是否开启: 开启慢查询日志: 这种方法开启只是临时开启,不是永久开启的 如果想要永久开启,就要在配置文件中设置 看一下超过多长时间的查询才是慢查询:下面显示的10就是超过10秒被认为是慢查询语句 设置慢查询的阈值时间: 如果有查询时间超过3秒的语句,就会把日志信息导入到上面显示的日志文件中,就可以拿出来进行分析。 对慢查询进行分析: ...原创 2021-01-24 16:15:08 · 128 阅读 · 0 评论 -
查询优化的一点点总结
小表驱动大表: 小的数据集驱动大的数据集: order by的几点注意: 排序使用索引也是遵循最佳左前缀的 Mysql有两种排序:文件排序和扫描有序索引排序,尽量避免文件排序,会导致查询非常的缓慢。尽量在索引列上排序。 排序和索引可以使用同一个索引,尽量这么使用 同时,在需要对不同字段进行排序的时候,尽量同升或者同降的排序,否则索引会失效 几点注意: 1.group by 实质是先排序再分组的,遵循索引键的最佳左前缀 2.当无法使用索引列,增大max_length_for_sort_data参数的设置+增原创 2021-01-24 15:41:56 · 105 阅读 · 0 评论 -
SQL索引优化
索引失效: 1.最佳左前缀法则:表中从左到右的列,如果在某几列建立了索引,则在查询的时候不能越过最左边的建立索引的列,否则索引失效;也不越过中间的建立索引的列,负责后面的索引也会失效。 2.不在索引列上做任何操作,否则也会全表扫描 3.将索引列用作范围查找的话,那么在此索引列之后的索引都会失效 4.尽量少用 select *;如下所示,不使用select * ,Extra还额外用到了Index 5.mysql在使用 !=或者<>时无法使用索引,会导致全表扫描 6.is null,is原创 2021-01-23 21:31:49 · 329 阅读 · 0 评论 -
SQL的索引学习部分总结
索引 索引是数据结构,可以帮助mysql高效获取数据。是排好序的快速查找数据结构。 索引一般是以BTREE实现的,每个节点保存着索引键值,指向表中的物理数据。而且索引本身也很大,一般不会放在内存中。 *- 优点:1.提高了数据检索的效率,降低数据库的IO成本;2.通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 缺点:1.索引实际上也是一张表,保存了主键和索引字段,并指向实体表的记录,所以索引列占用空间较大;2.降低了更新表的速度,因为每个修改表都会更新索引表;3.优化耗时* 索引的分原创 2021-01-18 21:10:44 · 200 阅读 · 0 评论 -
MySQL的引擎初识
首先,查看一下mysql的引擎 可以看到,mysql默认使用的执行引擎是InnoDB InnoDB引擎的特点: 支持主外键和事务 是行锁,操作只锁定某一行,不对其他行有影响,所以适合高并发的操作 缓存区不仅缓存索引也缓存真实数据,所以对内存要求较高,内存大小对性能有这决定性的影响 在5.5版本之前,mysql的默认执行引擎是MyISAM,这也是比较常用的执行引擎 MyISAM引擎的特点: 不支持外键和事务 不支持行锁,但是支持表锁,但是由于操作需要锁定整张表,所以不适合高并发场景 优势是访问速度快,原创 2021-01-18 15:13:54 · 93 阅读 · 0 评论