![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库性能优化
文章平均质量分 80
Postgresql中国用户会
Postgresql中国用户会致力于PostgreSQL在中国的推广
主要负责PostgreSQL各大会议在中国的信息发布,技术牛文的推广。
展开
-
useful function & operator & custom operator for Row and Array Comparisons
社区里一位同学的需求:请问 有什么办法可以判断 ,一个数组里面至少一个元素在一个范围之间?select 1 any(ARRAY[0.8,3.2]) and 3 >= any(ARRAY[0.8,3.2])例如,这个,我喜欢的结果是f我们注意一下,这个SQL实际上返回的是TRUE,因为分开来看1 3 >= any(ARRAY[0.8,3.2])返回的也是转载 2015-10-14 22:24:55 · 618 阅读 · 0 评论 -
Oracle FORALL & PostgreSQL ? op any|all (ARRAY)
On my laptop running Oracle Database 11g Release 2, it took 4.94 seconds to insert 100,000 rows, one at a time. With FORALL, those 100,000 were inserted in 0.12 seconds. Wow!Instead of doing tha转载 2015-10-14 22:27:37 · 510 阅读 · 0 评论 -
PostgreSQL 秒杀场景优化
秒杀场景的典型瓶颈在于对同一条记录的多次更新请求,然后只有一个或者少量请求是成功的,其他请求是以失败或更新不到告终。例如,Iphone的1元秒杀,如果我只放出1台Iphone,我们把它看成一条记录,秒杀开始后,谁先抢到(更新这条记录的锁),谁就算秒杀成功。例如:使用一个标记位来表示这条记录是否已经被更新,或者记录更新的次数(几台Iphone)。update tbl se转载 2015-10-14 22:29:32 · 2036 阅读 · 0 评论 -
妙用explain Plan Rows快速估算行
http://people.planetpostgresql.org/dfetter/index.php?/archives/80-Approximate-Counts.html通过这种方法,我们可以快速的估算一个表,视图的记录数,当然也包括带条件的查询中,最终结果的返回集。例如:postgres=# EXPLAIN (FORMAT JSON) SELECT 1 FRO转载 2015-10-14 22:28:38 · 675 阅读 · 0 评论 -
PostgreSQL数据库 OLTP高并发请求性能优化
在多核系统中,一般TPS会随并发数的增加而提升,但是当并发数超过一定的数值(如CPU核数的2到3倍以后),性能开始下降,并发数越高,下降越严重。例子:更新500万记录表中的1条随机记录。开8000个并发。create table test_8000 (id int primary key, cnt int default 0);insert into test_8000 s转载 2015-10-14 22:30:06 · 4126 阅读 · 0 评论 -
PostgreSQL index scan enlarge heap page scans when index and column correlation small
今天在讲解PostgreSQL 性能优化的 成本因子校准时发现一个奇异的问题, 索引扫描带来了巨大的heap page scan数目.视频如下 : http://www.tudou.com/programs/view/yQ0SzBqx_4w/如果数据库的单个数据块很大的话, 这种情况带来的负面影响也将被放大. 例如32k的block_size显然比8k的block_size转载 2015-10-14 22:31:26 · 609 阅读 · 0 评论 -
PostgreSQL range gist index 20x+ speedup than Mysql index combine query
今天一位兄弟跟我抱怨MYSQL里面查IP地址库并发几千每秒的查询数据库就抗不住了.于是问他要来了他们的IP地址库数据和查询用的SQL以及MYSQL里面的表结构。把数据转到PostgreSQL里面做一下相对应的压力测试,看看PostgreSQL的表现。MYSQL里面的表结构如下 : CREATE TABLE ip_address_pool ( id int(10)转载 2015-10-14 22:32:25 · 472 阅读 · 0 评论 -
Oracle index by table(Associative array) used in PostgreSQL
Oracle plSQL中支持3种集合变量, index-by table, varray, nest table。其中index-by table是不限元素个数,支持字符串或INT下标。用法举例:DECLARE -- Associative array indexed by string: TYPE population IS TABLE OF NUMBER -转载 2015-10-14 22:23:38 · 462 阅读 · 0 评论 -
PostgreSQL性能优化综合案例讲解 - 2
上节: http://blog.163.com/digoal@126/blog/static/163877040201221382150858/【声明】欢迎转载, 注明出处.【调优阶段8】1. 压力测试pgbench -M prepared -r -c 1 -f /home/postgres/test/login0.sql -j 1 -n -T转载 2015-10-14 22:19:58 · 1779 阅读 · 0 评论 -
PostgreSQL性能优化综合案例讲解 - 1
【声明】欢迎转载, 注明出处.【正文】【软件环境】 CentOS 5 x64PostgreSQL 9.1.3plproxy 2.3pgbouncer 1.4.2【测试模型】设计一个包含INSERT, UPDATE, SELECT语句的业务模型用于本优化案例.业务逻辑 :转载 2015-10-14 22:18:37 · 1348 阅读 · 0 评论 -
试用 PGStrom
PGStrom是一个使用GPU进行并行计算的custom scan provider插件,架构如下:从WIKI上的文档来看,性能提升非常可观。JOIN的表越多,提升效果越明显。需要安装cuda7.0的驱动,以及toolkit。参考 https://developer.nvidia.com/cuda-downloads转载 2015-10-14 22:25:29 · 1533 阅读 · 0 评论 -
使用 PGStrom 2 (GPU JOIN, BulkScan, GpuPreAgg, ...)
BUG fixed, 测试了一下。JOIN性能确实好很多,主要体现在。1. BuldkScan300毫秒左右,而seqscan需要1500毫秒。2. GpuJoin约4.5秒。而hash join约8秒。postgres=# explain (analyze,verbose,costs,buffers,timing) select count(*) from t1 na转载 2015-10-14 22:26:20 · 650 阅读 · 0 评论 -
performance tuning case: array search & date order by , data updated daily (use cursor solve it)
一位PG社区的朋友提到的一个应用场景,目前遇到性能问题。数据结构大概是这样的,包含一个主键,一个数组,一个时间,其他字段。请求分析:有检索需求,比较频繁。查找数组中包含某些元素的记录,并按时间排序输出所有符合条件的记录,检索到的符合条件的记录可能上万条,也可能较少。有插入需求,量不大。有更新需求,一条记录最多一天会被更新一次,当然也可能不会被更新。无删除需求。数据量在千转载 2015-10-14 22:22:08 · 423 阅读 · 0 评论 -
PostgreSQL TPC-C极限优化玩法
转载自:https://github.com/digoal/pgsql_admin_script/blob/c77b9eeb1e513bb9c2cbbad2794604a7b01bb404/pgsql_perf_tuning.mdPostgreSQL TPC-C极限优化玩法digoal2016-01-19简介本文以工业界测试模型TPmC为测试模型,介转载 2016-01-21 10:24:55 · 5102 阅读 · 2 评论