对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 修改mysql数据库配置: 0. 最快的当然是直接 copy 数据库表的数据文件(版本和平台最好要相同或相似):1. 设置 innodb_flush_log_at_trx_commit = 0 ,相对于 innodb_flush_log_at_trx_commit = 1 可以十分明显的提升导入速…
MYSQl 全表扫描以及查询性能 -- 本文章仅用于学习,记录 一. Mysql在一些情况下全表检索比索引查询更快: 1.表格数据很少,使用全表检索会比使用索引检索更快.一般当表格总数据小于10行并且数据行的长度非常小的时候会使用全表检索;   2.在ON或者WHERE中,没有使用索引列作为查询条件:   3.使用了索引列与一个常量进行比较,但是mysql发现该索引列覆盖的数据太大,反而全表检索更快(一般当索引列覆盖的数据大于全表数据的30%时,会触发mysql使用全表检索);   4.使用了一…
paip.提升性能---mysql 优化cpu多核以及lan性能的关系. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax //////环境 双核2.9g , 内存2g  ,XPSP2 mysql5.6 ,myisam 50W数据insert,需要50s...平均1w/s的速度了.呵. /////cpu多核大幅提升mysql性能 传输myisam,10w数据.20连接.. 在…
1. 概述 1.1 HBase概述 HBase由master节点和region server节点组成.在100-105集群上,100和101是master节点,102-105是region server节点. 每个region server管理很多region,每个region只会属于一个region server.一个region的大小可以自己配置(100-105集群上一个region大小为100GB). 在HBase中创建一张表时,刚开始默认是一个region,若表越来越大,超过一个regi…
6.1 为什么查询速度会慢   查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段.这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序.分组等.   在完成这些任务时,查询需要在不同的地方花费时间,包括网络.CPU计算.生成统计信息和执行计划.锁等待等操作,尤其是向底层存储引擎检索数据的调用操作,这些调用需要在内存操作.CPU操作和内存不足时导致的IO操作上…
今天这篇文章源于上周在工作中解决的一个实际问题,它是个比较普遍的问题,无论做什么开发,估计都有遇到过.具体是这样的,我们有一份高校的名单(2657个),需要从海量的文章标题中找到包含这些高校的标题,其实就是模糊查询(关注公众号 渡码, 回复关键词 trie 获取源码).对应的伪代码如下 selected_titles = [] for 标题 in 海量标题: for 高校 in 高校名单: if 标题.contains(高校): selected_titles.add(标题) break 如果是…
优化COUNT()查询 COUNT() 是一个特殊的函数,有两种非常不同的作用: 统计某个列值的数量,也可以统计行数.在统计列值时要求列值是非空的(不统计NULL ).如果在COUNT() 的括号中指定了列或者列的表达式,则统计的就是这个表达式有值的结果数. 另一个作用是统计结果集的行数,当MySQL确认括号内的表达式值不可能为空时,实际上就是在统计行数,最简单的就是当我们使用COUNT(*) 的时候. 通常来说,COUNT() 都需要扫描大量的行(意味着要访问大量数据)才能获得精确的结果,因此…
优化关联查询 如果想要优化使用关联的查询,我们需要特别留意以下几点: 确保ON或者USING子句中的列上有索引.在创建索引的时候需要考虑到关联的顺序.当表A和表B用列c关联的时候,如果优化器的关联顺序是B.A,那么就不需要在B表的对应列上建索引.除非有其他理由,否则只需要在关联顺序的第二个表的对应列上创建索引,没有用的索引只会带来额外的负担. 确保任何的GROUP BY 和 ORDER BY 中的表达式只涉及一个表中的列,这样MySQL才有可能使用索引来优化这个过程. 当升级MySQL的时候需要…
注:在执行SQL语句前加上explain可以查看MySQL的执行计划 数据库:MySQL官方提供的sakila数据库 Max优化: 例如:查询最后支付时间 explain select max(payment_date) from payment \G; 询的类型为simple,没有用到任何索引,扫描行数为1万多行,用时0.02sec 优化方法: 在payment_date列建立索引 create index idx_paydate on payment(payment_date); 此执行结果…
当向MySQL 发送一个请求的时候MySQL 到底做了什么? 1.客户端发送一条查询给服务器 2.服务器先检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果.否则进入下一阶段 3.服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划 4.MySQL 根据优化器生成的执行计划,调用存储引擎的API 来执行查询 5.将结果返回给客户端 注意:MySQL客户端和服务器之间的通信协议是“半双工”,这意味着,在任何时刻,要么有服务器向客户端发送数据,要么由客户端向服务器发送数据,这两个动作…