`
ben.meng
  • 浏览: 11452 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

转载 postgre调优

阅读更多
参照官方手册和自己在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

    Postgre SQL 9.4安装包,用于Postgre SQL的安装

    Postgre SQL数据库安全防护.pptx

    Postgre SQL 数据库安全防护知识点 Postgre SQL 数据库安全防护是指对 Postgre SQL 数据库实施的一系列安全保护措施,以防止数据库泄露事件的发生。以下是相关知识点: 一、Postgre SQL 数据库安全防护机制 * MD5...

    nacos_postgre.sql

    nacos_postgre.sql

    Postgregis+PostGIS

    Postgregis+PostGIS,开源的空数据库。

    Postgre JDBC驱动

    Postgre JDBC驱动Postgre JDBC驱动Postgre JDBC驱动

    QGIS连接Postgre数据库操作

    QGIS软件连接Postgre数据库截图操作

    Postgre数据库远程连接设置

    PostgreSQL是一种功能强大的开源关系型数据库管理系统,广泛用于企业级数据存储和管理。要实现PostgreSQL数据库的远程连接,你需要进行一系列的配置步骤,确保数据库服务器允许来自不同网络的连接请求。...

    postgre自动生成代码

    PostgreSQL,简称Postgre,是一款开源的对象关系型数据库管理系统,以其强大的功能和高度的稳定性受到开发者的喜爱。而"Postgre自动生成代码"指的是利用特定的工具或框架,自动化生成与PostgreSQL数据库相关的Java...

    postgre最新驱动

    postgre最新驱动

    postgre安装文档

    postgre安装文档

    易语言源码 Postgre SQL 连接池

    易语言源码 Postgre SQL 连接池。基于 http://www.sanye.cx/?id=12020 的源码 二次开发...封装了一些高级方法..包括,连接池+查询缓存+不知道真假的储存过程+慢查询记录。使用源码使用了E2EE支持库(模块部分思路借鉴...

    postgre学习文档2

    ### PostgreSQL索引详解 #### 索引的重要性与应用场景 **PostgreSQL** 是一款功能强大的开源关系型数据库管理系统,提供了多种索引类型以满足不同场景的需求。合理的索引设计能够显著提升查询性能,减少服务器资源...

    Postgre帮助文档CHM

    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. 结论

    MsSql+Mysql+oracle+Postgre驱动jar包

    在给定的压缩包文件中,我们包含了四个主要的数据库的驱动jar包:MsSql、Mysql、Oracle和Postgre。这些驱动是Java连接到对应数据库的桥梁,通过Java Database Connectivity (JDBC) API来实现。 1. **MsSql...

    postgre数据库自动备份操作教程.pdf

    postgre数据库自动备份操作教程.pdf

    VC访问Postgre数据库

    在VC++环境中,访问数据库是一项常见的任务,而“VC访问PostgreSQL数据库”涉及的技术主要集中在如何利用Microsoft Visual C++(VC)与PostgreSQL数据库进行交互。在这个程序中,两种主要的访问方式被提及:一是使用...

    postgre数据库使用手册

    8. **性能监控与调优**:通过`pg_stat_activity`、`pg_stat_user_tables`等视图监控数据库性能,调整参数优化性能。 **三、PostgreSQL 必备参考手册** PostgreSQL的官方文档是学习和解决问题的重要资源,包含了...

    vs连接postgre示例

    在本文中,我们将深入探讨如何在Visual Studio (VS) 2010中连接到PostgreSQL数据库,并通过一个简单的控制台应用程序示例进行演示。PostgreSQL是一种强大的开源关系型数据库管理系统,而ADO(ActiveX Data Objects)...

    Postgre Drive.msi

    Postgre的 ODBC 驱动:Postgre Drive.msi

Global site tag (gtag.js) - Google Analytics