зеркало из
https://github.com/iharh/notes.git
synced 2025-10-29 12:46:06 +02:00
m
Этот коммит содержится в:
родитель
06d3bde83e
Коммит
42639fb2e4
@ -1,3 +1,3 @@
|
||||
https://www.postgresql.org/docs/current/functions-srf.html
|
||||
https://postgrespro.ru/docs/postgrespro/17/functions-srf
|
||||
... from generate_series(1, 10000) as id;
|
||||
... from generate_series(1, 1e6) as id;
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
https://www.postgresql.org/docs/current/storage.html
|
||||
https://www.postgresql.org/docs/current/storage-page-layout.html
|
||||
|
||||
each table consists from multiple layers
|
||||
each file is no more than 1 Gb
|
||||
|
||||
1
db/sql/postgres/feature/internals/vacuum/vacuum-cfg.txt
Обычный файл
1
db/sql/postgres/feature/internals/vacuum/vacuum-cfg.txt
Обычный файл
@ -0,0 +1 @@
|
||||
https://www.postgresql.org/docs/current/runtime-config-autovacuum.html
|
||||
@ -1,10 +1,10 @@
|
||||
2023
|
||||
Tenzor - Borovikov - Backend School for PG
|
||||
https://www.youtube.com/playlist?list=PLt0vzWoDuwcTdFnp-QWtx2yEvKMDlPw7l
|
||||
https://github.com/Kilor/PG-for-beginners
|
||||
PostgresProfessional - RogovLuzanovTolmachyov - QPT13 - Query Optimization of p12
|
||||
https://postgrespro.ru/education/courses/QPT
|
||||
https://www.youtube.com/playlist?list=PLaFqU3KCWw6JW80WBHPOe-SMJD2NOjmge
|
||||
2019
|
||||
PostgresProfessional - RogovLuzanovTolmachyov - QPT10
|
||||
https://www.youtube.com/playlist?list=PLaFqU3KCWw6K2sTAksX5AJq4SQDN5PA1t
|
||||
????
|
||||
Tenzor - Borovikov
|
||||
https://github.com/Kilor/PG-for-beginners
|
||||
|
||||
@ -1,5 +1,25 @@
|
||||
2023
|
||||
Tenzor - Backend School p4 - Query Analysis p2 0:00 of 1:40:59
|
||||
https://www.youtube.com/watch?v=Rg7AAEso3z0
|
||||
Tenzor - Backend School p4 - Query Analysis p1 0:00 of 1:24:11
|
||||
Tenzor - Backend School p4 - Query Analysis p1 9:00 of 1:24:11
|
||||
https://www.youtube.com/watch?v=4g2CJv0jRk0
|
||||
! 3:00 - by default PG does not get hints regarding plans
|
||||
! 18:00 - explain(settings) select * from pg_class; -- to check current settings
|
||||
! https://www.postgresql.org/docs/current/runtime-config.html
|
||||
! 27:48 - if counts of planned and actual record does not near the same, most probably statistics is obsolete
|
||||
! https://www.postgresql.org/docs/current/planner-stats.html
|
||||
! https://www.postgresql.org/docs/current/runtime-config-autovacuum.html
|
||||
! 30:32 !!! not enough statistics
|
||||
! alter table ... alter column ... set statistics [0..10000] -- columns of hystogram (max 10000 per column)
|
||||
! https://www.postgresql.org/docs/current/sql-createstatistics.html
|
||||
! 39:00 - shared_buffers setting need to be increased if multiple clients get mostly the same data
|
||||
! 43:00 - set io_track_timings=on; explain analyze ...
|
||||
! 52:00 - ! rows removed by filter should be small
|
||||
! 58.00 - https://www.postgresql.org/docs/current/storage.html
|
||||
! 59.00 - https://www.postgresql.org/docs/current/storage-page-layout.html
|
||||
! TID Scan - the dumbiest one
|
||||
! Seq Scan - linear, dumb one
|
||||
! Index Scan - smart
|
||||
! Index Only Scan - smartest
|
||||
! 1:09:00 - if Heap Fetches quite large, we made worse by this idx, compare to just "Index Scan"
|
||||
! 1:13:00 - Foreign Scan - for tables on ext servers
|
||||
|
||||
@ -21,10 +21,62 @@ JPoint - Sitnikov - B-Tree indices using Boot, PostgreSQL, JPA 18:00 of 45:07
|
||||
! select ... from users where state = 'PENDING' and name = ?
|
||||
! create index state_name_users on users(name) include(state) -- idx will not sort by state, just include it
|
||||
! create index of (col1, col2) -- index sorted on combination of state, name
|
||||
Tenzor - Backend School - PG Indices p2 0:00 of 1:21:33
|
||||
Tenzor - Backend School - PG Indices p2 2:00 of 1:21:33
|
||||
https://www.youtube.com/watch?v=WTELBpLUb2E
|
||||
Tenzor - Backend School - PG Indices p1 0:00 of 1:10:44
|
||||
! 4:00 - hash idx - https://www.postgresql.org/docs/current/hash-index.html
|
||||
! 6:00 - !! hash idx can be created only on one field (with = operator), we can use op with single eq-op
|
||||
! 7:00 - create index ... using hash(fild-name);
|
||||
! 10:00 - gist - generalized search tree -- https://www.postgresql.org/docs/current/gist.html
|
||||
! universal infrastructure (b-tree, r-tree, rd-tree)
|
||||
! 12:00 - gist support geom-operators (<<, &<, &>, >>, <@, ~=, &&, <<|, &<|, ~, @), point, box, circle, poly types
|
||||
! https://www.postgresql.org/docs/current/functions-geometry.html
|
||||
! 18:00 https://www.postgresql.org/docs/current/functions-net.html, inet-type
|
||||
! 25:00 - gist is good for ranges ... using gist(daterange(dtb, dte, '[]'));
|
||||
! ... where daterange(dtb, dte, '[]') @> '2023-01-01'::date; -- 8-times less hits than b-tree
|
||||
! 29:00 - gist-operators with btree behavior
|
||||
! https://www.postgresql.org/docs/current/btree-gist.html
|
||||
! 31:00 - pg-antipatterns for gist - https://habr.com/ru/companies/tensor/articles/679834/
|
||||
! 40:00 - https://www.postgresql.org/docs/16/gist-examples.html (? no from v17)
|
||||
! 51:00 - create index ...with (buffering=auto); -- https://www.postgresql.org/docs/16/gist-implementation.html (? no for 17)
|
||||
! 52:00 - spgist (gist optimized for space partitioning) -- https://www.postgresql.org/docs/current/spgist.html
|
||||
! only for the single field
|
||||
! 54:00 - gin (generalized inverted index) -- https://www.postgresql.org/docs/current/gin.html
|
||||
! https://www.postgresql.org/docs/16/gin-examples.html (? no from v17)
|
||||
! 1:02:00 - brin - store only min/max or bloom-mask -- https://www.postgresql.org/docs/current/brin.html
|
||||
! good for cases like append-only logs with timestamps
|
||||
! https://www.postgresql.org/docs/16/brin-intro.html (? no from v17)
|
||||
! 1:10:00 - bloom - store only min/max or bloom-mask -- https://www.postgresql.org/docs/current/bloom.html
|
||||
! logic is the same as for hash
|
||||
|
||||
|
||||
Tenzor - Backend School - PG Indices p1 of 1:10:44
|
||||
https://www.youtube.com/watch?v=sNCKlklvGO0
|
||||
! 11:00 - select relname, relpages from pg_class where relaname like 'idx_%'; -- for estimating idx size
|
||||
! 12:00 create index on <tbl>((field=val)) -- expr-base idx, but bad
|
||||
! 12:30 create index on <tbl>(field) where field=val; -- partial/conditional ind - better because size of it is smaller
|
||||
! 15:00 pg has 3 types of expr: immutable, stable, volatile -- https://www.postgresql.org/docs/current/xfunc-volatility.html
|
||||
! only immutable are for idx
|
||||
! 21:00 create index concurrently - for helping queries not to wait, but concurrent-idxes can't be rolled back from transactions
|
||||
! 24:00 - create unique index ... alter table ... add primary key using index ...
|
||||
! 25:00 - select * from pg_stat_progress_create_index; -- https://www.postgresql.org/docs/current/progress-reporting.html
|
||||
! 27:00 - Uber - from PG to MySQL and back - https://habr.com/ru/companies/slurm/articles/322624/
|
||||
! 28:00 - select * from pg_stat_user_indexes where idx_scan = 0; -- find not-used indexes
|
||||
! drop index concurrently;
|
||||
! 31:00 - index types - https://www.postgresql.org/docs/current/indexes-types.html
|
||||
! btree, hash, gist, spgist, gin, brin, xindex (https://www.postgresql.org/docs/current/xindex.html)
|
||||
! 33:00 btree - balanced tree, good for ordered types - https://www.postgresql.org/docs/current/btree.html
|
||||
! 36:00 btree uses prefix condition idx(a, b, c) - can be used for (a), (a, b)
|
||||
! 39:00 for conditions a <> .., a not in ... a <> any/all - index will be used very bad (search all the layer)
|
||||
! 44:00 for btree it is good to use field in cardinality grow order
|
||||
! 49:00 for btree array field using is bad
|
||||
! 51:00 ... null values - better to use conditional indexes - where a is not null or b is not null, where (a, b) is not null
|
||||
! 54:00 if we have 2 independent indexes for (a) and for (b), then select ... where a=1 and b=1;
|
||||
! will use use bitmap index scan, but with a lot of rows each
|
||||
! create idx on (a, b), create idx on (a) where v = 1; create idx on (?) where a=1 and b=1;
|
||||
! 58:00 suspicious Limit/Sort/Scan
|
||||
! better to put sorb-by field to index fields tail
|
||||
! 59:00 btree can be used for prefix like-search ... relname like 'pg\_class\_%'
|
||||
! 1:05:00 - create index on prefix(md5 text_pattern_ops) -- use uperator-class text_pattern_ops
|
||||
2022
|
||||
Percona - A Deep Dive Into PostgreSQL Indexing - Ibrar Ahmad 0:00 of 46:10
|
||||
https://www.youtube.com/watch?v=7OvrBmxW_e8
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
https://www.postgresql.org/docs/current/sql-createstatistics.html
|
||||
!!! alter table ... alter column ... set statistics [0..10000] -- columns of hystogram (max 10000 per column)
|
||||
|
||||
https://www.postgresql.org/docs/current/planner-stats.html
|
||||
https://www.postgresql.org/docs/current/multivariate-statistics-examples.html
|
||||
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
http://mapstruct.org/
|
||||
|
||||
spring extensions
|
||||
https://mapstruct.org/documentation/spring-extensions/reference/html/
|
||||
https://github.com/mapstruct/mapstruct-spring-extensions
|
||||
|
||||
https://github.com/mapstruct/mapstruct
|
||||
https://github.com/mapstruct/mapstruct-examples
|
||||
|
||||
http://mapstruct.org/documentation/
|
||||
http://mapstruct.org/documentation/installation/
|
||||
|
||||
http://mapstruct.org/documentation/reference-guide/
|
||||
http://mapstruct.org/documentation/stable/reference/html/
|
||||
|
||||
lombok-int
|
||||
'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
||||
<scope>provided</scope>
|
||||
If you are using Lombok 1.18.16 or newer you also need to add lombok-mapstruct-binding in order to make Lombok and MapStruct work together.
|
||||
https://www.baeldung.com/java-mapstruct-lombok
|
||||
|
||||
idea-plugin
|
||||
https://plugins.jetbrains.com/plugin/10036-mapstruct-support
|
||||
https://github.com/mapstruct/mapstruct-idea
|
||||
|
||||
baeldung
|
||||
https://www.baeldung.com/tag/mapstruct
|
||||
https://www.baeldung.com/mapstruct
|
||||
2024
|
||||
https://habr.com/ru/articles/818489/
|
||||
https://github.com/yayauheny/javanotice-mapstruct
|
||||
2022
|
||||
https://reflectoring.io/java-mapping-with-mapstruct/
|
||||
https://github.com/thombergs/code-examples/tree/master/mapstruct
|
||||
! @MappingTarget - for updating existing instances
|
||||
!!! Exceptions throwing during mapping
|
||||
! using Formatters
|
||||
! mapping collections, streams, enums
|
||||
! default values/expressions and constraints
|
||||
! @DecoratedWith, @BeforeMapping, @AfterMapping
|
||||
! additional cfg-options
|
||||
2020
|
||||
Lviv JavaClub - [Event 159] - MapStruct 0:00 of 1:05:32
|
||||
https://www.youtube.com/watch?v=0fNKc0daZ-c
|
||||
2018
|
||||
https://habr.com/post/433270/
|
||||
|
||||
src
|
||||
https://mapstruct.org/documentation/stable/api/org/mapstruct/Mapping.html
|
||||
https://github.com/mapstruct/mapstruct/blob/main/core/src/main/java/org/mapstruct/Mapping.java
|
||||
21
pl/java/libfws/mapping/mapstruct/articles.txt
Обычный файл
21
pl/java/libfws/mapping/mapstruct/articles.txt
Обычный файл
@ -0,0 +1,21 @@
|
||||
baeldung
|
||||
https://www.baeldung.com/tag/mapstruct
|
||||
https://www.baeldung.com/mapstruct
|
||||
2024
|
||||
https://habr.com/ru/articles/818489/
|
||||
https://github.com/yayauheny/javanotice-mapstruct
|
||||
2022
|
||||
https://reflectoring.io/java-mapping-with-mapstruct/
|
||||
https://github.com/thombergs/code-examples/tree/master/mapstruct
|
||||
! @MappingTarget - for updating existing instances
|
||||
!!! Exceptions throwing during mapping
|
||||
! using Formatters
|
||||
! mapping collections, streams, enums
|
||||
! default values/expressions and constraints
|
||||
! @DecoratedWith, @BeforeMapping, @AfterMapping
|
||||
! additional cfg-options
|
||||
2020
|
||||
Lviv JavaClub - [Event 159] - MapStruct 0:00 of 1:05:32
|
||||
https://www.youtube.com/watch?v=0fNKc0daZ-c
|
||||
2018
|
||||
https://habr.com/post/433270/
|
||||
6
pl/java/libfws/mapping/mapstruct/features/enum-mapping.txt
Обычный файл
6
pl/java/libfws/mapping/mapstruct/features/enum-mapping.txt
Обычный файл
@ -0,0 +1,6 @@
|
||||
2022
|
||||
https://reflectoring.io/java-mapping-with-mapstruct/#mapping-enums
|
||||
@ValueMappings/@ValueMapping
|
||||
<AnyRamaining>/<AnyUnmapped>
|
||||
@EnumMapping(nameTransformationStrategy="...")
|
||||
strategies: suffix, stripSuffix, prefix, stripPrefix
|
||||
24
pl/java/libfws/mapping/mapstruct/mapstruct.txt
Обычный файл
24
pl/java/libfws/mapping/mapstruct/mapstruct.txt
Обычный файл
@ -0,0 +1,24 @@
|
||||
http://mapstruct.org/
|
||||
|
||||
spring extensions
|
||||
https://mapstruct.org/documentation/spring-extensions/reference/html/
|
||||
https://github.com/mapstruct/mapstruct-spring-extensions
|
||||
|
||||
https://github.com/mapstruct/mapstruct
|
||||
https://github.com/mapstruct/mapstruct-examples
|
||||
|
||||
http://mapstruct.org/documentation/
|
||||
http://mapstruct.org/documentation/installation/
|
||||
|
||||
http://mapstruct.org/documentation/reference-guide/
|
||||
http://mapstruct.org/documentation/stable/reference/html/
|
||||
|
||||
lombok-int
|
||||
'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
||||
<scope>provided</scope>
|
||||
If you are using Lombok 1.18.16 or newer you also need to add lombok-mapstruct-binding in order to make Lombok and MapStruct work together.
|
||||
https://www.baeldung.com/java-mapstruct-lombok
|
||||
|
||||
idea-plugin
|
||||
https://plugins.jetbrains.com/plugin/10036-mapstruct-support
|
||||
https://github.com/mapstruct/mapstruct-idea
|
||||
2
pl/java/libfws/mapping/mapstruct/src.txt
Обычный файл
2
pl/java/libfws/mapping/mapstruct/src.txt
Обычный файл
@ -0,0 +1,2 @@
|
||||
https://mapstruct.org/documentation/stable/api/org/mapstruct/Mapping.html
|
||||
https://github.com/mapstruct/mapstruct/blob/main/core/src/main/java/org/mapstruct/Mapping.java
|
||||
@ -3,5 +3,7 @@ https://github.com/deepseek-ai
|
||||
https://api-docs.deepseek.com/quick_start/pricing
|
||||
|
||||
2025
|
||||
Aiii - DeepSeq v3 + make 0:00 of 23:40
|
||||
https://www.youtube.com/watch?v=9Xb6KpVl9dQ
|
||||
Makarov - DeepSeq v3 now free 0:00 of 6:29
|
||||
https://www.youtube.com/watch?v=cNXTGOy6FQQ
|
||||
|
||||
Загрузка…
x
Ссылка в новой задаче
Block a user