Re: Massive table bloat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



于 2012/12/12 12:47, Sergey Konoplev 写道:
On Tue, Dec 11, 2012 at 8:30 PM, Rural Hunter <ruralhunter@xxxxxxxxx> wrote:
No. I was running it with another db super user. should it only be run by
postgres?

$ echo 'SELECT 1;' | psql -q -A -t -X -U postgres -P null="<NULL>"
Password for user postgres:
1
Oh, looks like I know why it happens.

The tool does not expect any password prompts.

$ echo 'SELECT 1;' | psql -q -A -t -X -U postgres -P null="<NULL>"
1

It expects either trusted access (without password) or that password
will be specified as a parameter -W somesecret.

I will definitely need to fix it. My false, sorry, it is not easy to
wrap a command line tool to a fully flegged database adapter in Perl.

So either make a trusted access for the super user from the localhost
(you are working on localhost, right?) or specify  -W
theuserspassword.

Anyway I suggest to install DBD::Pg Perl module, it will work much
faster and will load the system significantly less. The psql wrapper I
was asked to implement because one of the users had a hopeless boss
who did not allowed him to install DBD::Pg.
Ok, thanks. I installed dbd::pg. Now I can run it with specify additional parameters(-h, -p). Seems pgcompactor doesn't read them from env variables. However, I met another error when pgcompactor processes tables. Seems it doesn't expect some tables with autovacuum off:
ERROR A database error occurred, exiting:
DatabaseError DBD::Pg::st execute failed: ERROR: invalid input syntax for type real: "{autovacuum_enabled=false}" [for Statement "SELECT
    ceil(pure_page_count * 100 / fillfactor) AS effective_page_count,
    round(
        100 * (
            1 - (pure_page_count * 100 / fillfactor) / (size::real / bs)
        )::numeric, 2
    ) AS free_percent,
ceil(size::real - bs * pure_page_count * 100 / fillfactor) AS free_space
FROM (
    SELECT
        bs, size, fillfactor,
        ceil(
            reltuples * (
                max(stanullfrac) * ma * ceil(
                    (
                        ma * ceil(
                            (
                                header_width +
                                ma * ceil(count(1)::real / ma)
                            )::real / ma
                        ) + sum((1 - stanullfrac) * stawidth)
                    )::real / ma
                ) +
                (1 - max(stanullfrac)) * ma * ceil(
                    (
                        ma * ceil(header_width::real / ma) +
                        sum((1 - stanullfrac) * stawidth)
                    )::real / ma
                )
            )::real / (bs - 24)
        ) AS pure_page_count
    FROM (
        SELECT
            pg_catalog.pg_class.oid AS class_oid,
            reltuples,
            23 AS header_width, 8 AS ma,
            current_setting('block_size')::integer AS bs,
            pg_catalog.pg_relation_size(pg_catalog.pg_class.oid) AS size,
            coalesce(
                regexp_replace(
                    reloptions::text, E'.*fillfactor=(\\d+).*', E'\\1'),
                '100')::real AS fillfactor
        FROM pg_catalog.pg_class
        WHERE pg_catalog.pg_class.oid = 'public.article_text_197'::regclass
    ) AS const
    LEFT JOIN pg_catalog.pg_statistic ON starelid = class_oid
    GROUP BY bs, class_oid, fillfactor, ma, size, reltuples, header_width
) AS sq
"] at /loader/0x1ec3ff8/PgToolkit/Database/Dbi.pm line 143.



于 2012/12/12 11:46, Sergey Konoplev 写道:

On Tue, Dec 11, 2012 at 7:40 PM, Rural Hunter <ruralhunter@xxxxxxxxx>
wrote:
I downloaded pgtoolkit-v1.0beta3-fatscripts.tar.gz and tested it. I got
error when trying this:
./pgcompactor -a -u
DatabaseChooserError Can not find an adapter. at
/loader/0x1c26f18/PgToolkit/DatabaseChooser.pm line 63.
./pgcompactor -d testdb -u
DatabaseChooserError Can not find an adapter. at
/loader/0x1156f50/PgToolkit/DatabaseChooser.pm line 63.
You need to have either psql or DBD::PgPP or DBD::Pg on your machine.
The last one is recommended.

于 2012/12/12 5:27, Sergey Konoplev 写道:

On Tue, Dec 11, 2012 at 1:14 PM, Michael Sawyers <msawyers@xxxxxxx>
wrote:
Thanks for the tool suggestion.  I already know that I will be
refused
permission to use it on a live db for the first run here, but I will
be
using this on several test machines that I am sure are bloated to
prove
the
point and get this added into the standard toolkit here.
If you will have any feedback considering pgcompactor feel free to
write me directly. I am going to publish a new release in the nearest
days so I may include your issues in it.

ps. I have been using this tool constantly on more than 40 DB servers
for more than a year so it is tested quite good.

--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@xxxxxxxxx


--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@xxxxxxxxx


--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@xxxxxxxxx



--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@xxxxxxxxx




--
Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux