精华内容
下载资源
问答
  • Oracle千万级以上数据查询速度问题解决,生产环境查询优化

    当一张数据库表的数据量达到千万级别时,经常会出现查询耗时过长或者查询超时的情况, 此时分区表已经无法帮助我们。
    这里根据工作经验,总结几种生产环境下Oracle查询速度慢的解决方案:
    1、将原表修改为分区表。
    2、创建索引。
    3、停止耗时过长的sql。
    4、停止耗时过长的proc和job。
    5、数据库所在服务器问题。

    1、将原表修改为分区表

    系统投入生产环境后一段时间后,由于实际使用超出原有的预想,导致某张数据库表的数据量过大,这时就应该将该表修改为分区表。

    1.1 分区表判断

    查询是否是分区表:

    select partition_name from user_tab_partitions where table_name = 'tableName';
    

    注意表名大写。

    1.2 重建分区表

    1.2.1 将原表改名

    ALTER TABLE tableName RENAME TO table_20190418;
    

    1.2.2 重建分区表

    -- Create table
    create table tableName
    (
      TIMESTAMP  VARCHAR2(10) not null,
      ...
    )
    partition by range (TIMESTAMP)
    (
      partition tableName2017_04_15 values less than ('2017041600')
        tablespace tablespaceName
        pctfree 10
        pctused 40
        initrans 1
        maxtrans 255
        storage
        (
          initial 8M
          next 1M
          minextents 1
          maxextents unlimited
        )
    );
    

    1.2.3 拷贝数据

    insert into tableName select * from tableName_20190418 where TIMESTAMP like '201904%';
    commit;
    

    注意:以上操作最好在系统的非业务高峰操作。
    重建分区表的操作比较简单,这里不再详述。

    2、创建索引

    如果已经是分区表,这时就需要通过执行计划分析是否是查询的sql缓慢。

    2.1 启动执行计划

    -- 分析执行计划
    set autotrace on;
    

    执行上面语句后,在执行可能查询缓慢的sql,就可以看到Oracle是如何一步步执行这个sql的。查看执行计划,如果sql没有走索引,这是可能存在3种情况:无索引、索引失效、需要指定索引。
    另外下面语句可以显示sql运行的耗时:

    -- 显示sql运行时间
    set timing on;
    

    2.2 无索引

    查询分区表是否有索引:

    -- 查看分区表索引
    select index_name, table_name, locality from user_part_indexes where index_name = 'TABLE_NAME';
    

    下面是一些查询索引常用的语句:

    -- 查看表索引
    select * from user_indexes where index_name = 'TABLE_NAME';
    
    -- 查看分区表索引所在表空间
    SELECT index_name, tablespace_name FROM USER_IND_PARTITIONS T WHERE T.INDEX_NAME = 'TABLE_NAME';
    
    -- 查看一张表在哪些字段上建了索引
    select index_name, column_name, column_position from  all_ind_columns where  table_name = 'TABLE_NAME'
    

    创建对应的分区表索引:

    create index table_IDX on tableName (columnName) LOCAL ONLINE
      tablespace tablespaceName
      pctfree 10
      initrans 2
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
    

    local:代表创建的是分区表索引。
    online:代表在线创建索引,用于生产环境。

    2.3 索引失效

    如果索引存在,就要确认当前索引是否仍生效:

    -- 本地索引的整体状态
    select * from DBA_PART_INDEXES where index_name = 'INDEX_NAME';
    

    下面是一些相关常用语句:

    -- 索引分区状态
    select * from dba_ind_partitions where index_name = 'INDEX_NAME';
    
    -- 全局索引状态
    select index_name, status, last_analyzed, partitioned from dba_indexes where index_name='INDEX_NAME'
    

    如果索引失效,需重建本地索引:

    alter index indexname rebuild online;
    

    2.4 需要指定索引

    当本地索引存在并生效的情况下,执行sql时仍不走索引,此时常见的方法就是使用指定索引

    -- 强制指定索引
    SELECT /*+INDEX(t IDX_T_RES_ALLOSEG_ALLOID)*/ from tableName t; 
    

    这里的//中间不要有空格,t为表的别名。

    3、停止耗时过长的sql

    如果排除了分区表和索引的问题,那么久可能是Oracle正在运行着别的耗时的sql:

    -- 查找正在运行的sql
    select b.sid, b.username, b.serial#, a.spid, b.paddr, c.sql_text, b.machine
      from v$process a, v$session b, v$sqlarea c
     where a.addr = b.paddr  
       and b.sql_hash_value = c.hash_value;
    

    需要停止耗时的sql:

    -- 根据运行的sql生成kill语句
    select sql_text,
           b.sid,
           b.serial#,
           'alter system kill session''' || b.SID || ',' || b.serial# || ''';',
           b.username
      from v$process a, v$session b, v$sqlarea c
     where a.addr = b.paddr
       and b.sql_hash_value = c.hash_value;
    

    运行生成的sql,杀掉正在运行的sql。

    4、停止耗时过长的proc和job

    一般都是job中调用了proc,所以这里一起讲解。

    4.1 停止job

    -- 查找正在执行的job  
    select a.sid,
           a.job,
           b.what,
           a.LAST_DATE,
           a.LAST_SEC,
           a.THIS_DATE,
           a.THIS_SEC,
           b.priv_user,
           b.broken
      from dba_jobs_running a
      left outer join dba_jobs b on a.job = b.JOB;
    
    -- 查找正在执行的job的session
    select b.SID, b.SERIAL#, c.SPID
      from dba_jobs_running a, v$session b, v$process c
     where a.sid = b.sid
       and b.PADDR = c.ADDR
    
    --立刻停止job
    ALTER SYSTEM KILL SESSION 'sid, serial#';
    

    4.2 停止proc

    -- 查找当前运行的存储过程并生成kill语句
    select b.sid,
           b.SERIAL#,
           a.OBJECT,
           'alter system kill session ' || '''' || b.sid || ',' || b.SERIAL# ||
           ''';' kill_command
      from SYS.V_$ACCESS a, SYS.V_$session b
     where a.type = 'PROCEDURE'
       and a.sid = b.sid
       and b.status = 'ACTIVE';
    

    运行生成的sql,就可以kill掉正在执行的porc。

    5、数据库所在服务器问题

    5.1 数据库无法正常执行表分析

    -- 数据库是否开启自动表分析
    select * from V$PARAMETER where name = 'statistics_level';
    
    -- 查看表分析job
    select t.OWNER, t.JOB_NAME, t.JOB_CREATOR, t.LAST_START_DATE, t.LAST_RUN_DURATION, t.NEXT_RUN_DATE, 
      t.ENABLED, t.STATE, t.RUN_COUNT, t.FAILURE_COUNT
    from DBA_SCHEDULER_JOBS t 
      where JOB_NAME = 'GATHER_STATS_JOB';
    
    -- 查看表分析job执行情况
    select t.LOG_ID, t.OWNER, t.job_name, t.SESSION_ID, t.SLAVE_PID, t.STATUS, t.CPU_USED, t.ACTUAL_START_DATE
      from DBA_SCHEDULER_JOB_RUN_DETAILS t 
    where t.job_name = 'GATHER_STATS_JOB' 
      order by t.actual_start_date desc;
    

    这块理解的 不是很清楚,就不多误导大家了。

    5.2 Oracle的I/O

    需要处理千万级数据量的Oracle所在服务器,Oracle每秒的I/O需要在10M以上,否则多少都会影响查询速度。

    PS:数据库服务器本身的问题导致查询缓慢,是最不可能发生的。

    本文仅是我自己的理解,和解决生产环境问题的方法,大家有更好的解决方案欢迎评论留言,谢谢!

    以上手打,转载请注明出处(https://blog.csdn.net/qq_16239633/article/details/102719462),嘿嘿。

    展开全文
  • 最近写的数据查询系统,前台html+miniUI,后台java,数据库Oracle,查询数据很慢,230行的数据,每页显示20条记录,点击下一页load很慢,chrome显示searchData的函数执行需要8s左右。经测试,searchData主要的时间...

    最近写的数据查询系统,前台html+miniUI,后台java,数据库Oracle,查询数据很慢,230行的数据,每页显示20条记录,点击下一页load很慢,chrome显示searchData的函数执行需要8s左右。经测试,searchData主要的时间开销在open connection上,一般open函数需要6000左右ms(偶尔几十ms,不知道为什么)。由于是server端分页,所以,每load一页,就open DB connection,然后执行,再close。考虑能不能每次open后不关闭,这样能提高查询效率。网上搜了下,有个数据库连接池的东西。具体用法如下:

    1. ojdbc6.jar,放tomcat的lib下面。

    2. web-inf的web.xml增加如下内容:
      <resource-ref>
      <description>dbconnection</description>
      <res-ref-name>jdbccsrdb1</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>
    于是web.xml变成:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <resource-ref>
      <description>dbconnection</description>
      <res-ref-name>jdbccsrdb1</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref> 

    </web-app>

    3. Tomcat的conf下的context.xml增加
    <Resource name="jdbccsrdb1" auth="Containner" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
    maxActive="20" 
    maxIdle="1" 
    maxWait="100" 
    username="hirflapp" 
    password="hirfl910" 
    driverClassName = "oracle.jdbc.OracleDriver" 

    url="jdbc:oracle:thin:@XX.XX.XX.XX:1521:csrdb1"/>

    4. 自己写一个数据库连接池的类:

    import java.sql.*;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.Hashtable;

    import javax.sql.DataSource;

    public class DBPool {
    private static DataSource pool;
    static{
    Context env = null;
    try{
    InitialContext ctx = new InitialContext();
    pool = (DataSource)ctx.lookup("java:comp/env/jdbccsrdb1");
    if(pool==null)
    System.err.print("jdbccsrdb1 is unknown database");
    }catch(Exception e)
    {
    System.err.print("error");
    }
    }
    public static DataSource getPool()
    {
    return pool;
    }
    }

    5. 在自己的数据库连接类中使用上面的pool:

    import java.sql.*;
    import java.util.*;
    import java.util.regex.*;
    import oracle.sql.CLOB;
    public class DataBase {
    public static Connection getConnection() {
    Connection conn = null;
    try {
                         conn = DBPool.getPool().getConnection();  //使用pool
    } catch (Exception e) {
    e.printStackTrace();
    }
    return conn;
    }

    protected void open(String sql) throws Exception{
    if(connection == null) {
    connection = getConnection();
    }
    stmt = connection.prepareStatement(sql);
    }

    protected void close() throws Exception{
    if(connection != null && connection.getAutoCommit()) {
    connection.close();
    connection = null;
    }
    }
    }

    经测试,第一次加载时,open connection 需要7s或者8s的时间,然后每点击下一页都不存在connetion的时间了,速度一下子提高了。

    另外,搜搜看到一些说法,连接池貌似不需要关闭。待研究。

    展开全文
  • 在实际的项目中数据量较大,查询ES进行查询并做分页处理,导致当分页页码过大的时候,查询响应非常的,在网上找打这一个分析,记录一下! Tip 在 reindex 中解释了如何 能够 有效获取大量的文档。 分页 在...

    在实际的项目中数据量较大,查询ES进行查询并做分页处理,导致当分页页码过大的时候,查询响应非常的慢,在网上找打这一个分析,记录一下!

    • Tip

      reindex 中解释了如何 能够 有效获取大量的文档。

    分页

    在之前的 空搜索 中说明了集群中有 14 个文档匹配了(empty)query 。 但是在 hits 数组中只有 10 个文档。如何才能看到其他的文档?

    和 SQL 使用 LIMIT 关键字返回单个 page 结果的方法相同,Elasticsearch 接受 from 和 size 参数:

    • size
      显示应该返回的结果数量,默认是 10

    • from
      显示应该跳过的初始结果数量,默认是 0

    如果每页展示 5 条结果,可以用下面方式请求得到 1 到 3 页的结果:

    GET /_search?size=5
    GET /_search?size=5&from=5
    GET /_search?size=5&from=10

    考虑到分页过深以及一次请求太多结果的情况,结果集在返回之前先进行排序。 但请记住一个请求经常跨越多个分片,每个分片都产生自己的排序结果,这些结果需要进行集中排序以保证整体顺序是正确的

    在分布式系统中深度分页

    理解为什么深度分页是有问题的,我们可以假设在一个有 5 个主分片的索引中搜索。 当我们请求结果的第一页(结果从 1 到 10 ),每一个分片产生前 10 的结果,并且返回给 协调节点 ,协调节点对 50 个结果排序得到全部结果的前 10 个。

    现在假设我们请求第 1000 页—结果从 10001 到 10010 。所有都以相同的方式工作除了每个分片不得不产生前10010个结果以外。 然后协调节点对全部 50050 个结果排序最后丢弃掉这些结果中的 50040 个结果。

    可以看到,在分布式系统中,对结果排序的成本随分页的深度成指数上升。这就是 web 搜索引擎对任何查询都不要返回超过 1000 个结果的原因。

    展开全文
  • 日志表数据量大查询慢问题

    千次阅读 2018-05-18 14:50:10
    问题​ 系统里的操作日志表,主要记录员工发起的各个请求(CRUD),刚建了没几个月,已经上千万条记录了,导致页面查询的时候,大概需要3-5秒的时间,如果加上条件查询,基本5秒多了。这个时间是完全能接受的,所以...

    问题

    ​ 系统里的操作日志表,主要记录员工发起的各个请求(CRUD),刚建了没几个月,已经上千万条记录了,导致页面查询的时候,大概需要3-5秒的时间,如果加上条件查询,基本5秒多了。这个时间是完全不能接受的,所以打算重新设计一下。

    日志表的元数据:(id,name,url,param,add_time…)

    分析

    • 现在表每天大概30-50w的数据增长,基本每秒都有十几条的数据插入
    • 写多查少,数据库没有做读写分离
    • 一般只查看最近的数据
    • 基本不会逐个查询,条件查询用的比较多
    • 几个在where中用到的字段都没加索引
    • sql比较简单,基本没有什么可以优化的

    方案

    • 给where条件上的字段加索引

      ​ 由于name和url查询的时候需要用到like “%xxx%”,这样就算给name和url加上索引,查询的时候也不会用到。add_time字段加索引可以用到,而且where中用到的比较多。但是给数据量这么大的表加索引,耗时惊人。之后越来越多的数据,索引消耗的空间也很可观。

    • 分表

      • 根据hash(name)取模分表

        ​ 需要预估分多少个表,按当前数据量和数据增长速度来看,几十个表都不够。而且后期增长后添加分表重新分表的工作量太大了。

      • 根据add_time按每几个月增量分表

        ​ 根据数据增长速度来看,基本需要每周都建个新表,未来表的数量多到难以想象。

    • 归档

      ​ 因为一般只查看最近的操作日志,可以限制原表储存数据的时间,先把之前的数据存到一张old表中,再每天转存一个月前一天的数据,保持原表只保存最近一个月的数据。

    • 集群

      • 主从复制

      • 读写分离

        由于暂时不考虑集群,这两个pass了

    解决

    ​ 重新分析了一下原来的需求,发现对于员工查询类型的请求,并不是很重要,可以不保存。而表里保存的记录基本有90%都是查询类型的请求记录。所以只要过滤改类型的请求,只保存增、删、改的请求记录,就可以使增长量下降90%,这样表的数据压力就没有原来这么大了。再每天将一个月前的数据归档,原表的数据量就大大减少,查询速度也就跟着上来了。

    过滤请求

    ​ 在原来的拦截器中,对request.getRequestURI()进行过滤,原先请求url地址中包含”/get”、”/fetch”、”/list”、”/query”等请求相关的关键字(需要当时设计接口地址的时候有一定的规范),全部直接return。部分代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    public class LogInterceptor extends HandlerInterceptorAdapter {
    	//不需要记录日志的url关键字
    	private static final String[] NO_LOG_URL_KEYWORD = {"/get", "/fetch", "/list", "/query"};
      
    	/**
    	 * 记录操作日志
    	 *
    	 * @param request
    	 */
      	@Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        	this.insertLogOperate(request);
        }
      
      	@Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        
        }
      
    	private void insertLogOperate(HttpServletRequest request) {
       		//过滤uri
       		String uri = request.getRequestURI();
       		for (String key : NO_LOG_URL_KEYWORD) {
            	if (uri.contains(key)) {
                	return;
            	}
        	}
        	// 记录操作日志入库
        	LogOperate log = new LogOperate();
        	logOperate.setName(authUtil.getCurrentUserName());
        	logOperate.setParam(JsonUtil.toJsonString(request.getParameterMap()));
        	logOperate.setIp(RequestUtils.getClientIP(request));
        	logOperate.setUrl(uri);
        	logOperate.setAddTime(new Timestamp(System.currentTimeMillis()));
        	logOperateService.save(logOperate);
    	}
    }
    

    ​ 修改过程中发现一个问题:如果是POST类型的请求,request.getParameterMap()不能获取到请求的参数,需要用流读取request,而如果在拦截器中读取了,Controller层就读取不到参数了。网上查了一下,需要重写一个方法来解决,这个就不再这里说明了。

    数据表处理

    新建一张log_old表,和原来的log表结构一样:

    create table log_old like log;
    

    写一个存储过程,把一个月前的记录存到log_old中:

    delimiter $
    CREATE PROCEDURE proc_logBackUp()
    begin
    set @time = NOW() - INTERVAL 1 MONTH;
    insert into log_old select * from log where add_time < @time;
    delete from log where add_time < @time;
    end
    $
    delimiter ;
    

    创建事件,每天执行上面这个过程:

    create event if not exists event_logBackUp
    on schedule every 1 day
    on completion preserve
    do call proc_logBackUp();
    

    备注:如果数据量太大,第一次执行proc_logBackUp()可能会执行失败,可以根据数据量,把@time改成手动设置某个时间点,分多次执行过程。之后的每天执行时间就不会出什么问题了。

    展开全文
  • 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9、返回了不必要的...
  • 场景还原:前一个月给朋友写了个简单的登录功能,简单的查询数据库登录逻辑,使用mysbatis-plus进行的dao层代码生成(吐槽一下这个工具,真是方便一时爽,后面维护难,比较喜欢自己能够组装和优化sql,大数据量插入...
  • mongodb导入数据变得很慢,解决办法

    千次阅读 2019-06-16 11:09:24
    我是mongodb小白,学习过程中遇到了一个棘手的问题,向mongos中导入大约1G的数据,变得越来越,甚至进度条一直走了(之前也插入过1G数据,没遇到这种情况)。自己摸索了好久,终于解决。解决方法,与大家分享 ...
  • 今天写程序碰到一个问题,程序刚开始运行的好好的,到了后面,数据库中的文件越来越多的时候,程序运行开始变,到了后来, 一条条件查询语句,竟然要用一分钟之久,要知道只有几万条数据(虽然数据内容大) ...
  • 解决MySQL删除和插入数据很慢的问题

    千次阅读 2021-03-16 11:17:20
    修改/etc/my.cnf文件,将 innodb_flush_log_at_trx_commit = 1改为0, 但这样就要承担数据库Crash后,1秒内未存储到数据库数据丢失可能的风险。MySQL文档中对该参数的描述如下: If the value of innodb_flush_log_...
  • 查询数据过多页面反应引入缓存解决方案(Redis、H2)问题:原系统查询接口支持分页也可能加入分页支持,导致Ajax查询数据过多,返回数据达到2W多条记录时响应已经极查询功能要求数据实时性,页面反应...
  • JavaWeb发布项目到线上后,第一次访问加载数据很慢 使用Tomcat服务器: 1.Tomcat解压项目; 2.Tomcat加载class类到缓存; 3.Java随机数生成依赖熵源(Entropy Source),默认的阻塞型的 /dev/random熵源可能导致阻塞...
  • 解决sqlite3插入数据很慢的问题

    千次阅读 2015-06-23 16:29:11
    但是假设你的业务是每间隔几秒插入几条数据,显然100ms是能容许的。解决办法是,在调用sqlite3_open函数后添加下面一行代码:  sqlite3_exec(db, "PRAGMA synchronous = OFF; ", 0,0,0);  上面的解决办法...
  • sqlserver查询突然变得很慢

    万次阅读 2019-03-04 19:01:25
    今天早上上班发现应该在周末执行完的脚本执行到了现在,靠着自建的etl日志表发现某个大表的查询 修改速度特别 。 后来重新启动了数据库(在控制面板的服务里面重新启动sqlserver),就好了。 猜测原因:可能是...
  • 慢查询日志分析

    万次阅读 2014-10-20 10:03:12
    慢查询日志 打开慢查询日志 慢查询日志,顾名思义就是记录执行比较慢查询的日志。 查看是否开启慢查询日志: show variables like '%slow%'; 打开慢查询日志。修改MySQL的配置文件my.cn一般是...
  • TiDB 慢查询排查和优化

    千次阅读 2019-12-23 11:55:23
    前段时间,我们升级了TiDB 3.0版本,我日常负责解决数据库慢查询的问题;...举个例子:在数据聚合接口平台有百余个接口,这些接口实时的去查询数仓ODS层,而ODS层的数据也是实时从业务系统同步的,聚合接口平...
  • 数据库优化——慢查询MySQL定位优化流程

    万次阅读 多人点赞 2021-05-19 11:07:25
    如何定位并优化慢查询SQL?如何使用慢查询日志?本文带来慢查询例子演示,新手都能看懂!那查询语句怎么办?explain带你分析sql执行计划!当主键索引、唯一索引、普通索引都存在,查询优化器如何选择?本文带你一...
  • Mysql慢查询日志以及优化

    千次阅读 2019-06-11 15:01:16
    慢查询日志设置 当语句执行时间较长时,通过日志的方式进行记录,这种方式就是慢查询的日志。 1、临时开启慢查询日志(如果需要长时间开启,则需要更改mysql配置文件) set global slow_query_log = on; 注:...
  • 但是假设你的业务是每间隔几秒插入几条数据,显然100ms是能容许的。 解决办法是,在调用sqlite3_open函数后添加下面一行代码:  sqlite3_exec(db, "PRAGMA synchronous = OFF; ", 0,0,0);  上面的解决...
  • 在数据库中条件查询很慢的时候,如何优化 1.建索引(a 提高查询检索的性能b 创建唯一索引c 创建主键d 归类) 2.减少表之间的关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询, 应该走索引,把...
  • Mysql的慢查询常用优化方式

    千次阅读 2019-04-28 21:31:32
    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...默认情况下,Mysql数据库并启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般建议启动该参...
  • 一张硬盘磁片,并是所有的扇区都在用来存储数据,还有部分扇区是用来干些别的事的。传统的扇区分割机制中,每512byte的数据之间,需要间隔一个同步/分隔(Sync/DAM)区域和一个ECC错误校验区域。而在“先进格式”...
  • 早上一来公司,质量部小伙伴们就说,后台系统“订单管理模块”无法加载出数据了,不是网络问题不是网络问题!好吧,DBA今日又请假,能影响大家的测试,赶快排查下原因:1、 查看下日志吧: 进入k8s服务器,既然...
  • 在安装redhat Enterprise Linux server 5.4时,格式化1TB的硬盘一个下午竟然进度到一般,本来以为是因为硬盘上有太多的数据,所以慢,下班就直接关机回家了,今天早上来到开机重新安装时格式化速度依旧很慢,原来...
  • MySQL慢查询优化 EXPLAIN详解

    万次阅读 2016-09-19 22:03:57
    我们平台过一段时间就会把生产数据库的慢查询导出来分析,要嘛修改写法,要嘛新增索引。以下是一些笔记、总结整理 慢查询排查  show status; // 查询mysql数据库的一些运行状态  show status like '...
  • 常见Mysql的慢查询优化方式

    万次阅读 多人点赞 2018-09-21 16:37:02
     在公司实习的时候,导师分配了SQL慢查询优化的任务,任务是这样的:每周从平台中导出生产数据库的慢查询文件进行分析。进行SQL优化的手段也主要是修改SQL写法,或者新增索引。  现在从记录项目中的一点点做起。 ...
  • Elasticsearch慢查询分析

    千次阅读 2018-11-20 15:59:40
    开发维度 - 查看查询,其结构以及要搜索的数据的映射(Mapping)。 我们将首先关注开发方面的问题。 我们将获得慢查询,讨论DSL查询语言,并查看有助于改进Elasticsearch查询的小型常规选项。 2、开发维度—你的...
  • es 在数据大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。多时候数据量大了,特别...
  • 前段时间,公司系统突然异常缓慢,通过阿里云监控看到连接数突然陡增,并且释放,以下是我们的处理步骤:1、通过阿里云提供的监控日志查询是CPU过高,还是连接数过高导致的。2、CPU过高可能与读写操作过高有关,...
  • mysql慢查询日志使用总结

    万次阅读 2014-10-21 10:28:46
    mysql慢查询日志使用总结 首先查看log_output参数,确认日志信息输出到操作系统文件还是数据库的表中: mysql> show variables like 'log_output'; +---------------+-------+ | Variable_name | Value | +----...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 597,329
精华内容 238,931
关键字:

系统很慢查询不数据