优化
文章平均质量分 95
一只打酱油De篴
这个作者很懒,什么都没留下…
展开
-
mybatis 集成pagehelper 分页前查询总量方式,是包含原sql,在外面添加 select count(0) from();或者将查询的列替换为count(0).
项目线上随着业务量的增加,数据量增大,个别表上十万/百万,然后部分复杂sql就会变得很慢.并且发现了一个奇怪的问题.有些sql通过 pagehelper 分页,查询总量时,将查询的列替换为count(0) 查询总量.例如:原查询sql:getDemoList:select id, name, key_word, punch_time, salary_money, bonus_money, sex,原创 2020-10-14 17:12:07 · 3193 阅读 · 1 评论 -
ReentrantReadWriteLock(重入读写锁)
ReentrantReadWriteLock先写一段原始代码public class Demo3 { //共享变量 static int count = 0; public static void readMethod() { try { // 为了展示出多线程同时操作同一数据会出现问题。如果去掉之后可能会正常计算出数据 Thread.sleep(1); .原创 2020-06-30 12:18:18 · 226 阅读 · 0 评论 -
多线程线程安全之保证可见性
在单线程的环境下,如果向一个变量先写入一个值,然后在没有写干涉的情况下读取这个变量的值,那这个时候读取到的这个变量的值应该是之前写入的那个值。这本来是一个很正常的事情。但是在多线程环境下,读和写发生在不同的线程中的时候,可能会出现:读线程不能及时的读取到其他线程写入的最新的值。这就是所谓的可见性 1.引出问题 一个测试代码: public static boolean stop = false; public static void main(String[] args) t原创 2020-06-29 17:24:07 · 1309 阅读 · 0 评论 -
高性能MySql第三版 阅读简记(3)
调用EXPLAIN要使用EXPLAIN,只需在查询中的SELECT关键字之前增加EXPLAIN这个词。例如:explain select * from demo; 认为增加EXPLAIN时MySQL不会执行查询,这是一个常见的错误。事实上,如果查询在FROM子句中包括子查询,那么MySQL实际上会执行子查询,将其结果放在一个临时表中,然后完成外层查询优化。它必须在...翻译 2020-04-30 16:51:22 · 242 阅读 · 1 评论 -
高性能MySql第三版 阅读简记(2)
第4章 Schema与数据类型优化4.1 选择优化的数据类型4.1.3 字符串类型VARCHAR和CHAR类型VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM。如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档。先看看...翻译 2020-04-15 17:06:06 · 157 阅读 · 0 评论 -
高性能MySql第三版 阅读简记(1)
第4章 Schema与数据类型优化4.1 选择优化的数据类型MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。更小的通常更好。一般情况下,应该尽量使用可以正确存储数据的最小数据类型(1) 。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。但是...翻译 2020-04-15 16:50:30 · 227 阅读 · 0 评论 -
使用"merge into",ORACLE批量更新优化,将A表字段的值,变更为B表字段值.
1.建测试表语句CREATE TABLE MERGE_DATA_DEMO1( ID1 VARCHAR2(32), NAME1 VARCHAR2(100));COMMENT ON TABLE MERGE_DATA_DEMO1 IS '测试merge函数demo1表';CREATE TABLE MERGE_DATA_DEMO2( ID2 VARCHAR2(32)...原创 2019-12-02 10:15:49 · 1664 阅读 · 0 评论