标签: database-performance

如何收集有关 Postgres 模式中发生的函数调用的统计信息?

我正在寻找一种有效收集统计数据的方法,这些统计数据可以告诉我在给定的时间段内每个函数被调用的次数。

高效,我的意思是 stat 收集器应该使用尽可能少的磁盘 I/O 操作。

如果我还可以跟踪更多统计数据(例如返回时间),那就太好了,但这不是必需的。

postgresql database-performance

2
推荐指数
1
解决办法
2188
查看次数

为什么表统计信息被锁定?

我很困惑,因为没有为许多模式中的某些表收集统计信息.这些表已经在上一次夜间进行了分析,我认为这是由已启用的作业自动优化器统计作业完成的.我尝试通过接收手动收集统计数据时意识到这一点:

ora-20005 object statistics are locked
Run Code Online (Sandbox Code Playgroud)

在Tuning Advisor下令收集长时间运行查询的统计信息.

什么可以锁定这些统计数据 可以默认禁用吗?我认为没有人这样做,因为从长远来看,这种行为没有任何好处.


经过一些研究后,我找到了部分答案:https: //blogs.oracle.com/optimizer/entry/maintaining_statistics_on_large_partitioned_tables

我还发现通过每晚运行的分区程序发现统计信息被锁定为分区表,有一行:

dbms_stats.lock_table_stats(...)
Run Code Online (Sandbox Code Playgroud)

我不知道是好还是坏?我想前段时间它很好但是从Oracle 11g起它根本就没有意义.我将尝试介绍增量统计维护(docs)的方法,而不是禁用全球统计收集,我认为这是废弃的想法......

oracle11g database-performance

2
推荐指数
1
解决办法
8017
查看次数

如何使用 RethinkDB 耗尽机器的资源?

我问这个问题是因为我想了解如何更好地运行 RethinkDB,这意味着它应该在什么样的硬件上运行,应该在什么样的文件系统上运行,以及其他系统配置来最大化它的吞吐量。

我正在尝试尽可能快地用{"n": <counter>, "rand": <Math.random()>}. 我在某处读到这对于 200 个文档的批处理速度更快,所以这就是我要插入的内容。我也在使用柔软的耐用性。我开始了一个 nodejs 进程,我可以平均每秒插入 10k 个文档,非常好。

但是在发生这种情况时,rethinkdb 使用了大约 70% 的一个核心(我有 8 个虚拟核心,它是 i7-4770),而 nodejs 进程使用了​​ 5%。所以看起来CPU不是瓶颈。

一旦我开始另一个 nodejs 进程做同样的事情,两个进程上的每秒插入次数就会下降到大约 4k-5k。同样,CPU 负载保持不变。

我解雇了iotop,我确实在那里看到了很多行动,但不是我所期望的。我在 RAID0 中配置了两个 SSD,快速dd测试表明我可以以大约 800MBps 的速度写入和读取。这远高于 iotop 报告的实际读取和实际写入速度(平均读取 ~14MBps 平均写入 ~50MBps)。

那么我怎样才能耗尽我机器的资源呢?rethinkdb 需要什么才能运行得更快?为什么它不花费更多的资源并具有更高的吞吐量?

关于它运行的更多信息:它是Hetzner 的 EX40SSD,软件 RAID0 中的两个 SSD,ext4 文件系统(明天我将尝试安装它,noatime看看它是否更好)。默认情况下,rethinkdb 配置就是一切,插入是对只有一个分片和一个副本的表进行的。请随时询问我可能忘记提及的任何其他相关问题。

提前致谢。

performance resources database-performance node.js rethinkdb

2
推荐指数
1
解决办法
975
查看次数

SQLE中的索引使用情况:搜索与扫描

给定以下架构:

create table dbo.SomeTable 
(
    ID int primary key identity(1, 1),
    SomeColumn varchar(50)
);

create index IX_SomeColumn on dbo.SomeTable (SomeColumn);
Run Code Online (Sandbox Code Playgroud)

并用一些数据填充它:

declare @i int = 1000;

while @i > 0 begin
    set @i = @i - 1;

    insert dbo.SomeTable (SomeColumn) 
    values (convert(varchar, @i))
end
Run Code Online (Sandbox Code Playgroud)

此查询执行索引搜索:

select ID 
from dbo.SomeTable 
where SomeColumn = '431'
Run Code Online (Sandbox Code Playgroud)

此查询执行索引扫描时:

select ID 
from dbo.SomeTable 
where case when SomeColumn = '431' then 1 else 0 end = 1
Run Code Online (Sandbox Code Playgroud)

有没有办法让后者(或类似的东西)执行索引搜索?

我问,因为我希望能够将其case when放入视图的选择列表并在where子句中使用它,但如果我无法让SQL Server执行索引,它将永远不会像原始格式一样好寻求.

sql-server indexing sql-server-2008-r2 database-performance

2
推荐指数
1
解决办法
2152
查看次数

如何在codeigniter中构建嵌套查询?

嗨,下面是从不同表中获取不同数据计数的查询。

select(
        select count(*)
        from teachers
        where teacher_status = 1
  )as teacher_count,
  (
        select count(*)
        from students
        where student_status = 1
  )as students_count,
  (
        select count(*)
        from housekeepers
        where housekeeper_status = 1
  )as housekeeping_count,
  ( 
        select count(*)
        from students
        where student_status = 1 and
              gender = "Male"
  ) as total_male_student_count,
  ( 
        select count(*)
        from students
        where student_status = 1 and
              gender = "Female"
  ) as total_female_student_count
Run Code Online (Sandbox Code Playgroud)

现在我想在 codeigniter 构建器类的帮助下在 codeigniter 中构建这个单个查询,所以有人可以指导我吗..

运行单个查询的目的是最小化数据库命中。

提前致谢..!!!

php mysql codeigniter database-performance

2
推荐指数
1
解决办法
2936
查看次数

MySql:InnoDB_Force_recovery = 1 导致表为只读

我有一个在 MariaDB 10.1.18 下运行的应用程序,但我遇到了数据损坏的问题。因此,在 my.cnf 中,我更改参数 innoDB_force_recovery = 1 以忽略它们。但是,我无法在表中插入。但是我认为当 innoDB_force_recovery = 4 时禁止插入。当 innoDB_force_recovery = 1 时是否可以进行插入?此致。克里斯托夫

mysql database my.cnf database-performance mariadb

2
推荐指数
1
解决办法
9023
查看次数

UNIQUE SQL 索引是否也用于加快搜索速度?

假设有一个“系列值”的 SQL 数据库。每个都Value属于 a Series,并且有一个日期:

@Entity
class Series { … }

Value {
   Series series;
   Date date;
   …
   }
Run Code Online (Sandbox Code Playgroud)

对于系列和日期的每个组合,每个值都是唯一的,由该索引保证:

UkSeries UNIQUE INDEX value (series ASC, data ASC)
Run Code Online (Sandbox Code Playgroud)

在Hibernate中,上面的索引就是通过这个注解创建的:

@Table (
    uniqueConstraints = @UniqueConstraint (columnNames = {"series", "data"}))
Run Code Online (Sandbox Code Playgroud)

现在,请将它与这个可能的替代索引定义进行比较:

UkSeries UNIQUE INDEX value (series ASC, data ASC)
IdxSeries INDEX value (series ASC, data ASC)

@Table (
    uniqueConstraints = @UniqueConstraint (columnNames = {"series", "data"}),
    indexes = { @Index (name = "IdxSeries", columnList = "series, data") })
Run Code Online (Sandbox Code Playgroud)

考虑到我还想加快在数据库中搜索值的速度,我的问题是 …

mysql sql database-performance database-indexes

2
推荐指数
1
解决办法
885
查看次数

为什么 MongoDB 不同的查询计划显示不同的 nReturned 值?

faults我的MongoDB数据库中有一个集合,每个文档都有这些字段:rack_nametimestamp

为了测试和比较性能,我创建了这两个索引:

rack -> {'rack_name': 1}

time -> {'timestamp': 1}

现在我用explain()执行了以下查询:

db.faults.find({
    'rack_name': {
        $in: [ 'providence1', 'helena2' ]
    }, 
    'timestamp': {
        $gt: 1501548359000
    }
})
.explain('allPlansExecution') 
Run Code Online (Sandbox Code Playgroud)

结果如下:

 {
"queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "quicktester_clone.faults",
    "indexFilterSet" : false,
    "parsedQuery" : {
        "$and" : [ 
            {
                "timestamp" : {
                    "$gt" : 1501548359000.0
                }
            }, 
            {
                "rack_name" : {
                    "$in" : [ 
                        "helena2", 
                        "providence1"
                    ]
                }
            }
        ]
    },
    "winningPlan" : { …
Run Code Online (Sandbox Code Playgroud)

indexing mongodb database-performance query-performance mongodb-query

2
推荐指数
1
解决办法
1280
查看次数

如何提高 CockroachDB 的 INSERT 性能(每秒行数)(与 PostgreSQL 相比大约慢 20 倍)

附在本文末尾的 Python3 脚本创建了一个包含 5INT列的简单表,其中 3列带有索引。

然后它使用多行插入来填充表。

一开始,它设法每秒插入大约 10000 行。

Took   0.983 s to INSERT 10000 rows, i.e. performance =  10171 rows per second.
Took   0.879 s to INSERT 10000 rows, i.e. performance =  11376 rows per second.
Took   0.911 s to INSERT 10000 rows, i.e. performance =  10982 rows per second.
Took   1.180 s to INSERT 10000 rows, i.e. performance =   8477 rows per second.
Took   1.030 s to INSERT 10000 rows, i.e. performance =   9708 …
Run Code Online (Sandbox Code Playgroud)

sql bulkinsert sqlperformance database-performance cockroachdb

2
推荐指数
1
解决办法
1667
查看次数

如何加速mysql docker容器进行测试?

我使用 docker/docker-compose 来运行服务和测试。其中一项服务是 mysql:

db:
    image: mysql:5.6
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    expose:
      - "3306"
Run Code Online (Sandbox Code Playgroud)

有什么方法可以专门针对测试优化容器的速度(例如,将所有内容保存在内存中等)?

mysql testing database-performance docker docker-compose

2
推荐指数
1
解决办法
2869
查看次数