Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Размерность поля на производительность, кажется, не оказывает практически никакого влияния.
INSERT IGNORE INTO ...
ON DUPLICATE KEY UPDATE
ON DUPLICATE KEY… UPDATE, или так называемый UPSERT (UPdate + inSERT), был все-таки признан нужной “фичей” в сообществе PostgreSQL. Его релиз назначен на 9.5 версию СУБД
Раньше мыскль рос до постгреса, а в последнее время наоборот, постгрес берет лучшее из мыскля.
В PostgreSQL вам, скорей всего, придется симулировать такой подход к эксплуатации базы данных включением специального флага (SET AUTOCOMMIT).
[2015-06-04 16:03:11] [0A000] ERROR: SET AUTOCOMMIT TO OFF is no longer supported
create table table_1 (val int check (val > 5));
insert into table_1 (val) values (7);
create table test1 (id int primary key);
create table test2 (id_parent int references test1(id));
set foreign_key_checks = 0;
insert into test2 values (1);
set foreign_key_checks = 1;
select y
from
(
select 'a' x, 100 y
union all
select 'a', 300
) z
group by x;
with values_ as (select * from generate_series(-10, 10) order by random()) select * from values_ order by 1 asc;
generate_series
-----------------
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9
10
Свой собственный абзац заслуживает движок таблиц под названием Memory. Особенность этого движка заключается в том, что он не персистирует данные на диск, а хранит целиком в памяти. Количество памяти фиксировано и задается настройкой, которую менять можно только путем перезапуска сервера БД. С эксплуатацией этого движка связано два нюанса:
таблица, вышедшая за предел допустимого размера, моментально “свопится” на диск, карета превращается в тыкву, иногда вместе с базой данных (если движок Memory использовался для оптимизации производительности);
MEMORY table contents are stored in memory, which is a property that MEMORY tables share with internal temporary tables that the server creates on the fly while processing queries. However, the two types of tables differ in that MEMORY tables are not subject to storage conversion, whereas internal temporary tables are:
If an internal temporary table becomes too large, the server automatically converts it to on-disk storage, as described in Section 8.4.4, “How MySQL Uses Internal Temporary Tables”.
User-created MEMORY tables are never converted to disk tables.
ON DUPLICATE KEY… UPDATE, или так называемый UPSERT (UPdate + inSERT), был все-таки признан нужной “фичей” в сообществе PostgreSQL.
Что нужно знать при миграции с MySQL на PostgreSQL?