зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-30 21:26:09 +02:00 
			
		
		
		
	m
Этот коммит содержится в:
		
							родитель
							
								
									06d3bde83e
								
							
						
					
					
						Коммит
						42639fb2e4
					
				| @ -1,3 +1,3 @@ | |||||||
| https://www.postgresql.org/docs/current/functions-srf.html | https://www.postgresql.org/docs/current/functions-srf.html | ||||||
|     https://postgrespro.ru/docs/postgrespro/17/functions-srf |     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 table consists from multiple layers | ||||||
| each file is no more than 1 Gb | 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 | 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 | PostgresProfessional - RogovLuzanovTolmachyov - QPT13 - Query Optimization of p12 | ||||||
|     https://postgrespro.ru/education/courses/QPT |     https://postgrespro.ru/education/courses/QPT | ||||||
|     https://www.youtube.com/playlist?list=PLaFqU3KCWw6JW80WBHPOe-SMJD2NOjmge |     https://www.youtube.com/playlist?list=PLaFqU3KCWw6JW80WBHPOe-SMJD2NOjmge | ||||||
| 2019 | 2019 | ||||||
| PostgresProfessional - RogovLuzanovTolmachyov - QPT10 | PostgresProfessional - RogovLuzanovTolmachyov - QPT10 | ||||||
|     https://www.youtube.com/playlist?list=PLaFqU3KCWw6K2sTAksX5AJq4SQDN5PA1t |     https://www.youtube.com/playlist?list=PLaFqU3KCWw6K2sTAksX5AJq4SQDN5PA1t | ||||||
| ???? |  | ||||||
| Tenzor - Borovikov |  | ||||||
|     https://github.com/Kilor/PG-for-beginners |  | ||||||
|  | |||||||
| @ -1,5 +1,25 @@ | |||||||
| 2023 | 2023 | ||||||
| Tenzor - Backend School p4 - Query Analysis p2 0:00 of 1:40:59 | Tenzor - Backend School p4 - Query Analysis p2 0:00 of 1:40:59 | ||||||
|     https://www.youtube.com/watch?v=Rg7AAEso3z0 |     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 |     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 = ? |     !   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 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 |     !   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 |     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 |     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 | 2022 | ||||||
| Percona - A Deep Dive Into PostgreSQL Indexing - Ibrar Ahmad 0:00 of 46:10 | Percona - A Deep Dive Into PostgreSQL Indexing - Ibrar Ahmad 0:00 of 46:10 | ||||||
|     https://www.youtube.com/watch?v=7OvrBmxW_e8 |     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/planner-stats.html | ||||||
| https://www.postgresql.org/docs/current/multivariate-statistics-examples.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 | https://api-docs.deepseek.com/quick_start/pricing | ||||||
| 
 | 
 | ||||||
| 2025 | 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 | Makarov - DeepSeq v3 now free 0:00 of 6:29 | ||||||
|     https://www.youtube.com/watch?v=cNXTGOy6FQQ |     https://www.youtube.com/watch?v=cNXTGOy6FQQ | ||||||
|  | |||||||
		Загрузка…
	
	
			
			x
			
			
		
	
		Ссылка в новой задаче
	
	Block a user
	 Ihar Hancharenka
						Ihar Hancharenka