postgreSQL pgfincore introduces
postgreSQL pgfincore introduces pgfincore 和shared buffer不同,是OS层面的缓存,可以把大对象缓存到OS的cache里,其实就是内存,所以机器的内存配置越大越好,至于oracle是缓存到buffer_pool_keep,可以手工刷出,不过这个是database的缓存,和pg的share
postgreSQL pgfincore introduces
pgfincore 和shared buffer不同,是OS层面的缓存,可以把大对象缓存到OS的cache里,其实就是内存,所以机器的内存配置越大越好,至于oracle是缓存到buffer_pool_keep,可以手工刷出,不过这个是database的缓存,和pg的shared buffer同理。这里就不再详细介绍。
1.下载wget http://pgfoundry.org/frs/download.php/3186/pgfincore-v1.1.1.tar.gz
2.解压下载的安装包tar -zxvf pgfincore-v1.1.1.tar.gz
3.复制解压后的目录到pg源代码目录/contrib
4.安装:
postgres用户:
make clean
make
su - root
source /home/postgres/.bash_profile
make install
根据READ.rst
For PostgreSQL >= 9.1, log in your database and::
mydb=# CREATE EXTENSION pgfincore;
For other release, create the functions from the sql script (it should be in
your contrib directory)::
psql mydb -f pgfincore.sql
postgres=# select version();
version
---------------------------------------------------
PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42), 64-bit
postgres=# CREATE EXTENSION pgfincore;
CREATE EXTENSION
postgres=# select * from pg_extension ;
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
----------------+----------+--------------+----------------+------------+-----------+--------------
plpgsql | 10 | 11 | f | 1.0 | |
pg_buffercache | 10 | 2200 | t | 1.0 | |
pgfincore | 10 | 2200 | t | 1.1.1 | |
pgfincore使用:
pgfincore 对象的cache情况
pgfadvise_willneed 将对象刷入cache
pgfadvise_dontneed 将对象刷出cache
pgfadvise_loader 直接和page cache交互,加载,卸载页面
pgsysconf 操作系统的cache情况
pgsysconf_pretty同上,只不过输更易懂,带上了单位。
postgres=# \d t
Table "public.t"
Column | Type | Modifiers
--------+---------+-----------------------------------------------
s | integer | not null default nextval('t_s_seq'::regclass)
i | integer |
postgres=# insert into t(i) values (generate_series(1,10000000));
INSERT 0 10000000
postgres=# select pg_size_pretty(pg_relation_size('t'));
pg_size_pretty
----------------
346 MB
当前文件系统的使用情况:pgsysconf(),pgsysconf_pretty()
postgres=# select * from pgsysconf();
os_page_size | os_pages_free | os_total_pages
--------------+---------------+----------------
4096 | 182787 | 2044328
postgres=# select * from pgsysconf_pretty();
os_page_size | os_pages_free | os_total_pages
--------------+---------------+----------------
4096 bytes | 721 MB | 7986 MB
(1 row)
表t的使用情况:pgfincore
postgres=# select * from pgfincore('t');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit
------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
base/12699/16441 | 0 | 4096 | 88496 | 88496 | 1 | 181767 |
os_page_size:文件系统页大小
rel_os_pages:占用文件系统页数量
pages_mem:有多少文件系统页在系统cache
刷入cache:pgfadvise_willneed()
postgres=# select * from pgfadvise_willneed('t');
relpath | os_page_size | rel_os_pages | os_pages_free
------------------+--------------+--------------+---------------
base/12699/16441 | 4096 | 88496 | 186428
(1 row)
postgres=# select * from pgfincore('t');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit
------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
base/12699/16441 | 0 | 4096 | 88496 | 88496 | 1 | 186397 |
(1 row)
刷出cache:
postgres=# select * from pgfadvise_dontneed('t');
relpath | os_page_size | rel_os_pages | os_pages_free
------------------+--------------+--------------+---------------
base/12699/16441 | 4096 | 88496 | 275021
(1 row)
postgres=# select * from pgfincore('t');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit
------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
base/12699/16441 | 0 | 4096 | 88496 | 0 | 0 | 275052 |
(1 row)
pgfadvise_loader:
postgres=# select * from pgfadvise_loader('t', 0, true, true, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/12699/16441 | 4096 | 186626 | 3 | 3
(1 row)
loading:
postgres=# select * from pgfadvise_loader('t', 0, true, false, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/12699/16441 | 4096 | 186460 | 3 | 0
(1 row)
unloading:
postgres=# select * from pgfadvise_loader('t', 0, false, true, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/12699/16441 | 4096 | 186557 | 0 | 3
(1 row)
pgfadvise_NORMAL
pgfadvise_SEQUENTIAL
pgfadvise_RANDOM
这几个可以指定当前内存的属性,正常,顺序,还是随机。
快照与恢复:
做快照:
create table pgfincore_snapshot as
select 't'::text as relname,*,now() as date_snapshot
from pgfincore('t',true);
应用快照:
select * from pgfadvise_loader('t', 0, true, true,
(select databit from pgfincore_snapshot
where relname='t' and segment = 0));
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/12699/16441 | 4096 | 186259 | 88490 | 6
(1 row)
postgres=# select * from pgfincore('t');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit
------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
base/12699/16441 | 0 | 4096 | 88496 | 88490 | 2 | 186097 |
(1 row)
可以看到 88496 和88490,有几个页面是刷出cache,所以不相等
select * from pgfadvise_willneed('t');
postgres=# select * from pgfincore('t');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit
------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
base/12699/16441 | 0 | 4096 | 88496 | 88496 | 1 | 186227 |
(1 row)
限制:
*PgFincore needs mincore() and POSIX_FADVISE.
*PgFincore has a limited mode when POSIX_FADVISE is not provided by the platform.
*PgFincore needs PostgreSQL >= 8.3

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

MySQL und PostgreSQL: Leistungsvergleich und Optimierungstipps Bei der Entwicklung von Webanwendungen ist die Datenbank ein unverzichtbarer Bestandteil. Bei der Auswahl eines Datenbankverwaltungssystems sind MySQL und PostgreSQL zwei gängige Optionen. Bei beiden handelt es sich um relationale Open-Source-Datenbankverwaltungssysteme (RDBMS), es gibt jedoch einige Unterschiede in der Leistung und Optimierung. In diesem Artikel wird die Leistung von MySQL und PostgreSQL verglichen und einige Optimierungstipps gegeben. Leistungsvergleich im Vergleich zweier Datenbankverwaltungen

MySQL und PostgreSQL: Best Practices in der Webentwicklung Einführung: In der modernen Welt der Webentwicklung sind Datenbanken ein wesentlicher Bestandteil. Bei der Auswahl einer Datenbank werden häufig MySQL und PostgreSQL gewählt. In diesem Artikel werden Best Practices für die Verwendung von MySQL und PostgreSQL in der Webentwicklung behandelt und einige Codebeispiele bereitgestellt. 1. Anwendbare Szenarien MySQL eignet sich für die meisten Webanwendungen, insbesondere für solche, die hohe Leistung, Skalierbarkeit und Benutzerfreundlichkeit erfordern.

Erlernen Sie die Datenbankfunktionen in der Go-Sprache und implementieren Sie das Hinzufügen, Löschen, Ändern und Abfragen von PostgreSQL-Daten. In der modernen Softwareentwicklung ist die Datenbank ein unverzichtbarer Bestandteil. Als leistungsstarke Programmiersprache bietet die Go-Sprache eine Fülle von Datenbankbetriebsfunktionen und Toolkits, mit denen sich problemlos Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank implementieren lassen. In diesem Artikel erfahren Sie, wie Sie Datenbankfunktionen in der Go-Sprache erlernen und die PostgreSQL-Datenbank für tatsächliche Vorgänge verwenden. Schritt 1: Installieren Sie den Datenbanktreiber in der Go-Sprache für jede Datenbank

Die Go-Sprache ist eine schnelle und effiziente Programmiersprache, die sich zum Erstellen von Webdiensten und Back-End-Anwendungen eignet. PostgreSQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das eine höhere Zuverlässigkeit, Skalierbarkeit und Datensicherheit verspricht. In diesem Artikel befassen wir uns ausführlich mit der Verwendung von PostgreSQL in Go und geben einige praktische Codebeispiele und Tipps. PostgreSQL installieren und einrichten Zuerst müssen wir PostgreSQL installieren und einrichten. Zu finden auf der offiziellen Website

MySQL und PostgreSQL: Datensicherheit und Backup-Strategien Einführung: In der modernen Gesellschaft sind Daten zu einem unverzichtbaren Bestandteil des Geschäfts- und Privatlebens geworden. Für Datenbankverwaltungssysteme sind Datensicherheit und Backup-Strategien von entscheidender Bedeutung, um sowohl Daten vor Verlust oder Beschädigung zu schützen als auch die Zuverlässigkeit und Integrität wiederhergestellter Daten sicherzustellen. Dieser Artikel konzentriert sich auf die Datensicherheits- und Sicherungsstrategien zweier gängiger relationaler Datenbanksysteme, MySQL und PostgreSQL. 1. Datensicherheit: (1) Rechte des Nutzers

Mit der Entwicklung der Datenbanktechnologie bieten Datenbankverwaltungssysteme auch eine Vielzahl von Möglichkeiten. Entwickler können entsprechend ihren Anforderungen und Vorlieben die am besten geeignete Datenbank auswählen. Als fortschrittliches relationales Open-Source-Datenbanksystem erregt PostgreSQL bei Entwicklern immer mehr Aufmerksamkeit und Nutzung. Wie nutzt man also die PostgreSQL-Datenbank in der PHP-Programmierung? 1. Installieren und konfigurieren Sie die PostgreSQL-Datenbank. Bevor Sie PostgreSQL verwenden können, müssen Sie diese zunächst installieren und konfigurieren. Erste

MySQL und PostgreSQL: Wie optimiert man die Leistung von Datenbankabfragen? Überblick: Die Leistung von Datenbankabfragen ist ein wichtiger Gesichtspunkt bei der Entwicklung von Anwendungen. Eine gute Abfrageleistung verbessert die Reaktionsfähigkeit der Anwendung und das Benutzererlebnis. In diesem Artikel werden einige Methoden zur Optimierung der Datenbankabfrageleistung vorgestellt, wobei der Schwerpunkt auf zwei häufig verwendeten Datenbanken liegt: MySQL und PostgreSQL. Optimierung von Datenbankindizes: Datenbankindizes sind ein wichtiger Faktor zur Verbesserung der Abfrageleistung. Indizes können die Datensuche beschleunigen und die Zeit für das Scannen von Abfragen verkürzen.

Planung und Erweiterung der Datenbankkapazität: MySQL vs. PostgreSQL Einführung: Mit der rasanten Entwicklung des Internets und dem Aufkommen des Big-Data-Zeitalters ist die Planung und Erweiterung der Datenbankkapazität immer wichtiger geworden. MySQL und PostgreSQL sind zwei beliebte relationale Datenbankverwaltungssysteme (RDBMS). Sie weisen unterschiedliche Eigenschaften und anwendbare Szenarien hinsichtlich der Planung und Erweiterung der Datenbankkapazität auf. In diesem Artikel werden die beiden Datenbanken verglichen und einige Codebeispiele gegeben, um ihre Unterschiede zu veranschaulichen. 1. MySQ
