参照官方手册和自己在pg上做的实验,记录下pg(FREEBSD)的参数调优过程:
1. postgresql.conf是pg的主要配置文件.
调优主要分几个方面:
优化db,从表结构,sql语句,分表,分区,分库,物理设备,网络设备....进行优化,从量变到质变
表结构方面:
从http://www.pgsqldb.org 看到一个关于散列算法来优化索引的文章.给了我启发.
过程:
1 有一个列的定义很长,比如char(200),又或者是text类型,等等等.那里面肯定要存储
2 很长的字符串,可能是url,可能是地址,可能是.....
3 那么,select 此字段的时候,就要花费很多磁盘io.因为:字段长度大,读取的文件系统的块就多,那么磁盘的读取速度就慢.系统的响应时间就长.效率就慢, filesystem的block大小现在要改的话,没人肯冒着系统崩溃的危险来做这个事情,那么只能从字段的长度上着手.字段的内容又不可以更改,那能不能转换一下呢?一下就想到md5, 在往字段里存入内容之前.(这里是生成一个唯一性索引)做一个散列运算,即用md5函数.
create unique index "index_name" on urls using btree(md5(url));
那么最终存入的内容就是比较短小的md5值.索引的大小减少2/3.
(省了很多内存啊!)
postgresql 里头 md5()函数的定义,它返回的是 text 类型,是用hex转码后的文本流,其宽度是 32 bytes,也是很大. 要是转换为2进制的格式,其大小还会小很多那以后读取的时候,加一个md5和decode再转换回来就ok.
这种做法,典型的以cpu换io.可以一试!
内存:
在sysctl.conf中增加:(2G内存)
kern.ipc.shmall=1*1024*1024*1024/4096
//内存是分页的,以页为单位;每页大小为4K
//取物理内存的一半大小 再 除以4K
//共享内存总大小...单位:页 注:4K每页
kern.ipc.shmmax=1*1024*1024*1024//共享内存能使用的最大量...单位:bytes
//和上个选项大小一样,只是单位不同
kern.ipc.semmap=4096
//定义共享内存段大小...单位:bytes
内核:
把共享内存装载到 RAM 里,避免他们被交换到交换分区中:
sysctl 设置 kern.ipc.shm_use_phys=1
原文:
http://blog.chinaunix.net/u2/74570/showart_1849692.html
分享到:
相关推荐
Postgre SQL 9.4安装包,用于Postgre SQL的安装
Postgre SQL 数据库安全防护知识点 Postgre SQL 数据库安全防护是指对 Postgre SQL 数据库实施的一系列安全保护措施,以防止数据库泄露事件的发生。以下是相关知识点: 一、Postgre SQL 数据库安全防护机制 * MD5...
nacos_postgre.sql
Postgregis+PostGIS,开源的空数据库。
Postgre JDBC驱动Postgre JDBC驱动Postgre JDBC驱动
QGIS软件连接Postgre数据库截图操作
PostgreSQL是一种功能强大的开源关系型数据库管理系统,广泛用于企业级数据存储和管理。要实现PostgreSQL数据库的远程连接,你需要进行一系列的配置步骤,确保数据库服务器允许来自不同网络的连接请求。...
PostgreSQL,简称Postgre,是一款开源的对象关系型数据库管理系统,以其强大的功能和高度的稳定性受到开发者的喜爱。而"Postgre自动生成代码"指的是利用特定的工具或框架,自动化生成与PostgreSQL数据库相关的Java...
postgre最新驱动
postgre安装文档
易语言源码 Postgre SQL 连接池。基于 http://www.sanye.cx/?id=12020 的源码 二次开发...封装了一些高级方法..包括,连接池+查询缓存+不知道真假的储存过程+慢查询记录。使用源码使用了E2EE支持库(模块部分思路借鉴...
### PostgreSQL索引详解 #### 索引的重要性与应用场景 **PostgreSQL** 是一款功能强大的开源关系型数据库管理系统,提供了多种索引类型以满足不同场景的需求。合理的索引设计能够显著提升查询性能,减少服务器资源...
1. 从头开始 1.1. 安装 1.2. 体系基本概念 1.3. 创建一个数据库 1.4. 访问数据库 2. SQL 语言 2.1. 介绍 2.2. 概念 2.3. 创建新表 2.4. 向表中添加行 2.5. 查询一个表 2.6. 在表之间连接 ...3.6. 结论
在给定的压缩包文件中,我们包含了四个主要的数据库的驱动jar包:MsSql、Mysql、Oracle和Postgre。这些驱动是Java连接到对应数据库的桥梁,通过Java Database Connectivity (JDBC) API来实现。 1. **MsSql...
postgre数据库自动备份操作教程.pdf
在VC++环境中,访问数据库是一项常见的任务,而“VC访问PostgreSQL数据库”涉及的技术主要集中在如何利用Microsoft Visual C++(VC)与PostgreSQL数据库进行交互。在这个程序中,两种主要的访问方式被提及:一是使用...
8. **性能监控与调优**:通过`pg_stat_activity`、`pg_stat_user_tables`等视图监控数据库性能,调整参数优化性能。 **三、PostgreSQL 必备参考手册** PostgreSQL的官方文档是学习和解决问题的重要资源,包含了...
在本文中,我们将深入探讨如何在Visual Studio (VS) 2010中连接到PostgreSQL数据库,并通过一个简单的控制台应用程序示例进行演示。PostgreSQL是一种强大的开源关系型数据库管理系统,而ADO(ActiveX Data Objects)...
Postgre的 ODBC 驱动:Postgre Drive.msi