Re: UPDATE many records

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: UPDATE many records
Дата
Msg-id 90aae1ff-02a6-22b4-ae5f-c99b0b56a56f@aklaver.com
обсуждение исходный текст
Ответ на Re: UPDATE many records  (Israel Brewster <ijbrewster@alaska.edu>)
Ответы Re: UPDATE many records
Список pgsql-general
On 1/7/20 1:43 PM, Israel Brewster wrote:
>> On Jan 7, 2020, at 12:21 PM, Adrian Klaver <adrian.klaver@aklaver.com 
>> <mailto:adrian.klaver@aklaver.com>> wrote:
>>
>> On 1/7/20 1:10 PM, Israel Brewster wrote:
>>>> On Jan 7, 2020, at 12:01 PM, Adrian Klaver 
>>>> <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>> wrote:
>>>>
>>>> On 1/7/20 12:47 PM, Israel Brewster wrote:
>>>>> One potential issue I just thought of with this approach: disk 
>>>>> space. Will I be doubling the amount of space used while both 
>>>>> tables exist? If so, that would prevent this from working - I don’t 
>>>>> have that much space available at the moment.
>>>>
>>>> It will definitely increase the disk space by at least the data in 
>>>> the new table. How much relative to the old table is going to depend 
>>>> on how aggressive the AUTOVACUUM/VACUUM is.
>>>>
>>>> A suggestion for an alternative approach:
>>>>
>>>> 1) Create a table:
>>>>
>>>> create table change_table(id int, changed_fld some_type)
>>>>
>>>> where is is the PK from the existing table.
>>>>
>>>> 2) Run your conversion function against existing table with change 
>>>> to have it put new field value in change_table keyed to id/PK. 
>>>> Probably do this in batches.
>>>>
>>>> 3) Once all the values have been updated, do an UPDATE set 
>>>> changed_field = changed_fld from change_table where 
>>>> existing_table.pk = change_table.id <http://change_table.id>;
>>> Makes sense. Use the fast SELECT to create/populate the other table, 
>>> then the update can just be setting a value, not having to call any 
>>> functions. From what you are saying about updates though, I may still 
>>> need to batch the UPDATE section, with occasional VACUUMs to maintain 
>>> disk space. Unless I am not understanding the concept of “tuples that 
>>> are obsoleted by an update”, which is possible.
>>
>> You are not. For a more thorough explanation see:
>>
>> https://www.postgresql.org/docs/12/routine-vacuuming.html#VACUUM-BASICS
>>
>> How much space do you have to work with?
>>
>> To get an idea of the disk space currently used by table see;
>>
>> https://www.postgresql.org/docs/12/functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT
> 
> Oh, ok, I guess I was being overly paranoid on this front. Those 
> functions would indicate that the table is only 7.5 GB, with another 
> 8.7GB of indexes, for a total of around 16GB. So not a problem after all 
> - I have around 100GB available.
> 
> Of course, that now leaves me with the mystery of where my other 500GB 
> of disk space is going, since it is apparently NOT going to my DB as I 
> had assumed, but solving that can wait.

Assuming you are on some form of Linux:

sudo du -h -d 1 /

Then you can drill down into the output of above.

> 
> Thanks again for all the good information and suggestions!
> ---
> Israel Brewster
> Software Engineer
> Alaska Volcano Observatory
> Geophysical Institute - UAF
> 2156 Koyukuk Drive
> Fairbanks AK 99775-7320
> Work: 907-474-5172
> cell:  907-328-9145
>>
>>>>
>>>>> ---
>>>>> Israel Brewster
>>>>> Software Engineer
>>>>> Alaska Volcano Observatory
>>>>> Geophysical Institute - UAF
>>>>> 2156 Koyukuk Drive
>>>>> Fairbanks AK 99775-7320
>>>>> Work: 907-474-5172
>>>>> cell:  907-328-9145
>>>>
>>>>
>>>> --
>>>> Adrian Klaver
>>>> adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
>>
>>
>> --
>> Adrian Klaver
>> adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Israel Brewster
Дата:
Сообщение: Re: UPDATE many records
Следующее
От: Israel Brewster
Дата:
Сообщение: Re: UPDATE many records