Rumah pangkalan data tutorial mysql postgreSQL pgfincore introduces

postgreSQL pgfincore introduces

Jun 07, 2016 pm 02:58 PM
introduce postgresql

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman Jul 13, 2023 pm 03:33 PM

MySQL dan PostgreSQL: Perbandingan Prestasi dan Petua Pengoptimuman Semasa membangunkan aplikasi web, pangkalan data adalah komponen yang sangat diperlukan. Apabila memilih sistem pengurusan pangkalan data, MySQL dan PostgreSQL adalah dua pilihan biasa. Kedua-duanya ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS), tetapi terdapat beberapa perbezaan dalam prestasi dan pengoptimuman. Artikel ini akan membandingkan prestasi MySQL dan PostgreSQL dan memberikan beberapa petua pengoptimuman. Perbandingan prestasi membandingkan dua pengurusan pangkalan data

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Jul 14, 2023 pm 02:34 PM

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Jul 31, 2023 pm 12:54 PM

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Dalam pembangunan perisian moden, pangkalan data adalah bahagian yang amat diperlukan. Sebagai bahasa pengaturcaraan yang berkuasa, bahasa Go menyediakan pelbagai fungsi operasi pangkalan data dan kit alat, yang boleh melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data dengan mudah. Artikel ini akan memperkenalkan cara mempelajari fungsi pangkalan data dalam bahasa Go dan menggunakan pangkalan data PostgreSQL untuk operasi sebenar. Langkah 1: Pasang pemacu pangkalan data dalam bahasa Go untuk setiap pangkalan data

Menggunakan PostgreSQL dalam Go: Panduan Lengkap Menggunakan PostgreSQL dalam Go: Panduan Lengkap Jun 18, 2023 am 09:28 AM

Bahasa Go ialah bahasa pengaturcaraan yang pantas dan cekap sesuai untuk membina perkhidmatan web dan aplikasi bahagian belakang. PostgreSQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang menjanjikan untuk memberikan kebolehpercayaan, skalabiliti dan keselamatan data yang lebih tinggi. Dalam artikel ini, kami akan mendalami penggunaan PostgreSQL dalam Go dan memberikan beberapa contoh dan petua kod praktikal. Memasang dan menyediakan PostgreSQL Pertama, kita perlu memasang dan menyediakan PostgreSQL. Boleh didapati di laman web rasmi

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Jul 13, 2023 pm 03:31 PM

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Pengenalan: Dalam masyarakat moden, data telah menjadi bahagian penting dalam perniagaan dan kehidupan peribadi. Untuk sistem pengurusan pangkalan data, keselamatan data dan strategi sandaran adalah penting, kedua-duanya untuk melindungi data daripada kehilangan atau kerosakan dan untuk memastikan kebolehpercayaan dan integriti data yang dipulihkan. Artikel ini akan memberi tumpuan kepada keselamatan data dan strategi sandaran dua sistem pangkalan data hubungan arus perdana, MySQL dan PostgreSQL. 1. Keselamatan data: (1) Hak pengguna

Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Jun 12, 2023 am 09:27 AM

Dengan perkembangan teknologi pangkalan data, sistem pengurusan pangkalan data juga menyediakan pelbagai pilihan Pembangun boleh memilih pangkalan data yang paling sesuai mengikut keperluan dan pilihan mereka. Sebagai sistem pangkalan data hubungan sumber terbuka termaju, PostgreSQL semakin menarik perhatian dan penggunaan oleh pembangun. Jadi, bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? 1. Pasang dan konfigurasikan pangkalan data PostgreSQL Sebelum menggunakan PostgreSQL, anda perlu memasang dan mengkonfigurasinya. pertama

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Jul 12, 2023 pm 03:15 PM

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Gambaran Keseluruhan: Prestasi pertanyaan pangkalan data adalah pertimbangan penting semasa membangunkan aplikasi. Prestasi pertanyaan yang baik meningkatkan responsif aplikasi dan pengalaman pengguna. Artikel ini akan memperkenalkan beberapa kaedah untuk mengoptimumkan prestasi pertanyaan pangkalan data, memfokuskan pada dua pangkalan data yang biasa digunakan, MySQL dan PostgreSQL. Pengoptimuman indeks pangkalan data: Indeks pangkalan data merupakan faktor penting dalam meningkatkan prestasi pertanyaan. Indeks boleh mempercepatkan carian data dan mengurangkan masa pengimbasan pertanyaan.

Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Jul 12, 2023 pm 01:43 PM

Perancangan dan pengembangan kapasiti pangkalan data: MySQL vs. PostgreSQL Pengenalan: Dengan perkembangan pesat Internet dan kemunculan era data besar, perancangan dan pengembangan kapasiti pangkalan data telah menjadi semakin penting. MySQL dan PostgreSQL ialah dua sistem pengurusan pangkalan data hubungan (RDBMS) yang popular. Mereka mempunyai ciri yang berbeza dan senario yang boleh digunakan dalam perancangan dan pengembangan kapasiti pangkalan data. Artikel ini akan membandingkan kedua-dua pangkalan data dan memberikan beberapa contoh kod untuk menunjukkan perbezaannya. 1. MySQ

See all articles