精华内容
下载资源
问答
  • 背景 事情是这样的。一天下午4点42分左右。业务反馈我开发的服务在测试环境出现问题,返回资源...1)当前集群数据IO最高的索引XXX,数据量很小(100mb) 2)但是读写都很大(>1000QPS,写>1000QPS) ,使用...

    背景

    事情是这样的。一天下午4点42分左右。业务反馈我开发的服务在测试环境出现问题,返回资源数据是0。查日志发现是ES访问超时。相当于数据库挂了。持续了20多分钟自己恢复。
    咨询了ES团队,最终得到下面的答复:

    复制代码
    当前集群现状:
    1)当前集群数据IO最高的索引为XXX,数据量很小(100mb) 
    2)但是读写都很大(读>1000QPS,写>1000QPS) ,使用的是线下环境的机器
    3)索引分了10个片,4个副本问题
    分析:
    1)线下环境的机器之前了解到测试环境硬盘性能本来就很差,这个需要业务SRE一块来确定
    2)查询的时候,会一次性查询10个片,这样可能会查10台机器的数据,很容易出现木桶效应,造成集群的性能下降
    3)写入的时候,虽然是做了10个分片,看起来能加大写能力,但是机器数少,导致结果是每台机器分布了5个分片,等效于只做了2个分片,完全没有扩大写的能力
    建议:
    1)升级硬件,换成SSD
    2)分片改成2个,这样读能力比以前肯定有提升,写能力等价
    3)数据量很小,建议直接换成Redis
    复制代码
    我自己做了调查。测试环境ES有十台VM(非本地ESB磁盘)作为服务器。其中一台IO被打满。其他机器负载、IO都很低。对于这个问题,ES团队给出的答复是:
    复制代码
    ES的服务负载均衡、发现机制是自己写的,一般不会出现问题,
    Client仅仅对官方的客户端做了简单的封装,
    当然最好是可以对官方的客户端进行改造,
    但是我们现在的人力明显不行,只能继续沿用老的客户端使用;
    我们预计在10月份左右会出一个自研的客户端,
    会尽量避免出现一台机器导致部分查询出现问题,
    但是也避免不了,
    ES内部的服务发现机制,我们改变不了,除非改ES
    复制代码

    调查

    1.需要换成本地磁盘,测试环境也是我们的正式环境。是否能直接替换成物理机?多少台合适?怎么可以平滑替换?

    没有必要换成物理机。因为ES内存最多能用32G。内存多出来的是浪费用不上,有物理机也是隔成VM来用。

    原来10台VM是足够的,只需要同等数量替换。

    有机器替换功能。替换时原理是先申请机器部署。然后点击机器替换。会一台台的将分片赶到新机器上。一台下完自动下线老机器。

    2.我们测试环境有10台服务器,10个分片,4个副本,写/读QPS大概是7:6。究竟几个分片几个索引更合理?

    因为每个分片和副本是同步写。写比例大,副本多会对性能有很大影响。分片替换需要重建索引,很难平滑。所以只将副本数减少为一个分片1个。

    3.程序方面有没有可以优化的?

    在ES上层增加tair缓存。在进行数据更新操作时是单个数据读取。采用tair有更好的事务性,并减少了对ES的压力。ES只处理复杂查询请求。

    转载于:https://www.cnblogs.com/xiexj/p/11627885.html

    展开全文
  • # 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。 # 主线程中每秒会将重做日志缓冲写入磁盘的...
  • 物理之数据泵备份

    2018-02-26 15:59:02
    SQL ordered by Reads 去磁盘取数据,单位是次,如果太大,IO会导致整个数据库慢,是RAC的环境,可能会导致数据库重启。 BEGIN SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS', 0); END; ##代表数据泵备份,...

    SQL ordered by Reads 去磁盘取数据,单位是次,如果太大,IO会导致整个数据库慢,是RAC的环境,可能会导致数据库重启。

    物理读之数据泵备份

    BEGIN SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS', 0); END; ##代表数据泵备份,不要眼生啊。

    以上物理读最多的为数据泵,对系统的CPU和IO 都有很大的影响,尤其是我们使用了压缩备份。通常在数据库做备份的时候禁止我们去跑脚本的,原因就是如此。正常一个小时可以跑完的批,同时expdp可能需要三个小时才能跑完。最近就遇到一个这样的情况。

    转载于:https://blog.51cto.com/roidba/2073143

    展开全文
  • 简介: 大部分的情况是CPU在等I/O的/写,比如读写磁盘、操作数据库、网络数据访问等。 设定核数: 核心线程数 = CPU核数 / (1 - 阻塞系数),阻塞系数取值范围为0~1之间,可以凭借经验猜测,或者借助工具进行时间...

    得到确定CPU核数

    Runtime.getRuntime().availableProcessors();



    IO密集型和CPU密集型

    IO密集型(阻塞型)

    简介: 大部分的情况是CPU在等I/O的读/写,比如读写磁盘、操作数据库、网络数据访问等。
    设定核数: 核心线程数 = CPU核数 / (1 - 阻塞系数),阻塞系数取值范围为0~1之间,可以凭借经验猜测,或者借助工具进行时间计算得到精确数值;例如:核心线程数为8,阻塞系数为0.5,那么核数为16。



    CPU密集型(计算型)

    简介: 大部份时间用来做计算、逻辑判断等CPU运算,比如对数据的计算。
    设定核数: 核心线程数 = CPU核数 + 1

    展开全文
  • 为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。  平时在通过Sql Server Profiler 或者...

      SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。

      平时在通过Sql Server Profiler 或者打开Statistics IO 选项时看到物理读,逻辑度的单位都是页。

        在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息。此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID

     

    下表说明了 SQL Server 数据库的数据文件中所使用的页类型。

    页类型 内容

    Data

    text in row 设置为 ON 时,包含除 text ntextimagenvarchar(max)varchar(max)varbinary(max)xml 数据之外的所有数据的数据行。

    Index

    索引条目。

    Text/Image

    大型对象数据类型:

    • text ntextimagenvarchar(max)varchar(max)varbinary(max)xml 数据。

    数据行超过 8 KB 时为可变长度数据类型列:

    • varcharnvarcharvarbinarysql_variant

    Global Allocation Map、Shared Global Allocation Map

    有关区是否分配的信息。

    Page Free Space

    有关页分配和页的可用空间的信息。

    Index Allocation Map

    有关每个分配单元中表或索引所使用的区的信息。

    Bulk Changed Map

    有关每个分配单元中自最后一条 BACKUP LOG 语句之后的大容量操作所修改的区的信息。

    Differential Changed Map

    有关每个分配单元中自最后一条 BACKUP DATABASE 语句之后更改的区的信息。

    在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反。

    大型行支持

    行不能跨页,但是行的部分可以移出行所在的页,因此行实际可能非常大。页的单个行中的最大数据量和开销是 8,060 字节 (8 KB)。但是,这不包括用 Text/Image 页类型存储的数据。包含 varcharnvarcharvarbinarysql_variant 列的表不受此限制的约束。当表中的所有固定列和可变列的行的总大小超过限制的 8,060 字节时,SQL Server 将从最大长度的列开始动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA 分配单元中的页。每当插入或更新操作将行的总大小增大到超过限制的 8,060 字节时,将会执行此操作。将列移动到 ROW_OVERFLOW_DATA 分配单元中的页后,将在 IN_ROW_DATA 分配单元中的原始页上维护 24 字节的指针。如果后续操作减小了行的大小,SQL Server 会动态将列移回到原始数据页。

         数据行存储在页上,超出页大小如此。

    这样就很简单的出来了2个原则:

    表设计:Row 要占用尽可能短的长度,占用少的空间,让一个page上存储更多的row,这样在相同的读次数下,获取到的数据就更多了。

    查询: Select的时候,别动不动就来个*,因为当row 中有Image,text等,或者本身变长字段vchar等加起来的长度超过了8k,就会需要去

    ROW_OVERFLOW_DATA 中去读取一次。增加了读的开销。当然从网络等开销来说也不建议用 * 。

     

     

     

     

    转载于:https://www.cnblogs.com/buaaboyi/archive/2011/08/24/2152248.html

    展开全文
  • 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置 SIGNATURE, 在签名安全的情况下即可执行该过程。...
  •  硬件原因,数据库的配置不合理,数据库的数据文件和日志文件没有分磁盘存放,会极大影响IO性能  没有建立索引,或者SQL没有走索引。在千万级数据的表上建索引是很有必要的。  SQL过于复杂,过长的SQL语句满足...
  • ssaxlate -l pdisk0 //物理磁盘pdisk0从属于逻辑磁盘hdisk2 hdisk2 ## 查看SSA磁盘阵列中pdisk与hdisk的对应关系end //设置文件系统/tellinshare/sms的mind属性,否则当文件系统中有足够多的大文件(指32K以上的文件)...
  • 2.2.4 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。 2.2.5 写一个程序, 要求...
  • 数据库主要进行写操作,而从数据库负责操作。 原理 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存...
  • §12.4.2 磁盘读和缓冲区获取 146 §12.4.3 判定式崩溃 146 §12.5 使用EXISTS和IN 148 §12.6 分离事务(Discrete Transactions ) 149 §12.7 测试SQL语句性能 151 §12.7.1 SQL_Trace实用工具 151 §12.7.2 ...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • Java资源包01

    2016-08-31 09:16:25
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包101

    2016-07-13 10:11:08
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
  •  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
  • Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析 笔记 Hive篇 ...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

数据库磁盘读io为0