This commit is contained in:
parent
516c330dc2
commit
7ef1ee250f
@ -9,7 +9,7 @@ date: 2024-03-31
|
|||||||
**Особенности:**
|
**Особенности:**
|
||||||
- Для **первичного ключа** индекс создается автоматически.
|
- Для **первичного ключа** индекс создается автоматически.
|
||||||
- Можно **отключить автоматическое обновление индекса** и настроить обновление вручную.
|
- Можно **отключить автоматическое обновление индекса** и настроить обновление вручную.
|
||||||
- **Распухание индексов** (bloat) — это проблема увеличения размера индексов со временем, требующая переиндексации.
|
- **Распухание индексов** ([[Раздутие таблиц|bloat]]) — это проблема увеличения размера индексов со временем, требующая переиндексации.
|
||||||
|
|
||||||
- [[Создание индекса в PostgreSQL]]
|
- [[Создание индекса в PostgreSQL]]
|
||||||
- [[../Частичный индекс|Частичный индекс]]
|
- [[../Частичный индекс|Частичный индекс]]
|
||||||
@ -24,8 +24,8 @@ date: 2024-03-31
|
|||||||
- [[BRIN индекс в PostgreSQL|BRIN индекс]]
|
- [[BRIN индекс в PostgreSQL|BRIN индекс]]
|
||||||
|
|
||||||
**Влияние обновления строки на индекс**
|
**Влияние обновления строки на индекс**
|
||||||
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum.
|
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать - [[Autovacuum]].
|
||||||
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum.
|
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать vacuum.
|
||||||
***
|
***
|
||||||
## Мета информация
|
## Мета информация
|
||||||
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
|
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
|
||||||
|
34
dev/linux/Logical Volume Management.md
Normal file
34
dev/linux/Logical Volume Management.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- LVM
|
||||||
|
tags:
|
||||||
|
- maturity/🌱
|
||||||
|
date:
|
||||||
|
- - 2024-01-09
|
||||||
|
---
|
||||||
|
- [[Основные команды для управления LVM|Основные команды для управления LVM]]
|
||||||
|
|
||||||
|
Проверка состояния логических томов (LV)
|
||||||
|
```bash
|
||||||
|
sudo lvs -a -o +devices,lv_health_status
|
||||||
|
```
|
||||||
|
|
||||||
|
## Logical Volume
|
||||||
|
|
||||||
|
|
||||||
|
## Полезные материалы
|
||||||
|
- [Работа с LVM. Управление дисковыми носителями с помощью Logical Volume Manager](https://www.dmosk.ru/instruktions.php?object=lvm&ysclid=lr6peozovr651519872#delete)
|
||||||
|
***
|
||||||
|
## Мета информация
|
||||||
|
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||||
|
**Родитель**::
|
||||||
|
**Источник**::
|
||||||
|
**Автор**::
|
||||||
|
**Создана**::
|
||||||
|
### Дополнительные материалы
|
||||||
|
-
|
||||||
|
### Дочерние заметки
|
||||||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
- [[Основные команды для управления LVM]]
|
||||||
|
<!-- SerializedQuery END -->
|
80
dev/linux/Основные команды для управления LVM.md
Normal file
80
dev/linux/Основные команды для управления LVM.md
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
tags:
|
||||||
|
- maturity/🌱
|
||||||
|
date: 2024-11-12
|
||||||
|
---
|
||||||
|
Эта заметка содержит основные команды для работы с LVM (Logical Volume Management) в Linux. Команды разделены на несколько категорий: физические тома, группы томов, логические тома, управление файловыми системами, создание снимков, а также конфигурация и обслуживание.
|
||||||
|
## Physical Volumes
|
||||||
|
- `pvcreate <device>` — инициализация физического тома для использования в LVM.
|
||||||
|
- `pvdisplay` — отображение информации о физических томах.
|
||||||
|
- `pvs` — вывод всех физических томов с краткой информацией. Объем доступного и используемого пространства.
|
||||||
|
- `pvscan` — сканирование всех дисков на наличие физических томов.
|
||||||
|
- `pvresize <device>` — изменение размера физического тома.
|
||||||
|
## Volume Groups
|
||||||
|
- `vgcreate <volume-group> <physical-volume>` — создание группы томов из одного или нескольких физических томов.
|
||||||
|
- `vgextend <volume-group> <physical-volume>` — добавление физического тома в существующую группу томов.
|
||||||
|
- `vgreduce <volume-group> <physical-volume>` — удаление физического тома из группы.
|
||||||
|
- `vgdisplay` — отображение информации о группах томов.
|
||||||
|
- `vgs` — вывод всех групп томов с краткой информацией.
|
||||||
|
- `vgscan` — сканирование всех дисков для обнаружения групп томов.
|
||||||
|
- `vgremove <volume-group>` — удаление группы томов (должна быть пустой).
|
||||||
|
- `vgrename <old-name> <new-name>` — переименование группы томов.
|
||||||
|
## Logical Volumes
|
||||||
|
- `lvcreate -L <size> -n <name> <volume-group>` — создание логического тома в группе.
|
||||||
|
- `lvextend -L <size> <logical-volume>` — увеличение размера логического тома.
|
||||||
|
- `lvreduce -L <size> <logical-volume>` — уменьшение размера логического тома.
|
||||||
|
- `lvresize -L <size> <logical-volume>` — изменение размера логического тома до заданного значения.
|
||||||
|
- `lvdisplay` — отображение информации о логических томах.
|
||||||
|
- `lvs` — вывод всех логических томов с краткой информацией.
|
||||||
|
- `lvscan` — сканирование всех дисков для обнаружения логических томов.
|
||||||
|
- `lvrename <volume-group> <old-name> <new-name>` — переименование логического тома.
|
||||||
|
### Удаление Logical Volume
|
||||||
|
Размонтировать папку от LV.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
umount /folder/path
|
||||||
|
```
|
||||||
|
|
||||||
|
Откройте `/etc/fstab` и убедитесь, что нет записи для автоматического монтирования файловой системы. Если есть, удалите запись, сохраните изменения и закройте файл.
|
||||||
|
|
||||||
|
```
|
||||||
|
nano /etc/fstab
|
||||||
|
```
|
||||||
|
|
||||||
|
Также нужно убедиться, что к данной папке не присоединен docker volume.
|
||||||
|
|
||||||
|
После чего можно удалить LV
|
||||||
|
```shell
|
||||||
|
lvchange -an /dev/vgname/lvmname
|
||||||
|
lvremove /dev/vgname/lvmname
|
||||||
|
```
|
||||||
|
### Управление файловыми системами на логических томах
|
||||||
|
- `mkfs.ext4 /dev/<volume-group>/<logical-volume>` — создание файловой системы ext4 на логическом томе.
|
||||||
|
- `mkfs.xfs /dev/<volume-group>/<logical-volume>` — создание файловой системы XFS на логическом томе.
|
||||||
|
- `mount /dev/<volume-group>/<logical-volume> /mnt` — монтирование логического тома в директорию.
|
||||||
|
- `umount /mnt` — размонтирование логического тома.
|
||||||
|
## 5. Снимки (Snapshots)
|
||||||
|
- `lvcreate -L <size> -s -n <snapshot-name> <lv>` — создание снимка логического тома.
|
||||||
|
- `lvremove <snapshot-name>` — удаление снимка.
|
||||||
|
- `lvconvert --merge <snapshot-name>` — объединение снимка с оригинальным логическим томом.
|
||||||
|
## 6. Конфигурация и обслуживание LVM
|
||||||
|
- `lvchange -a y <logical-volume>` — активация логического тома.
|
||||||
|
- `lvchange -a n <logical-volume>` — деактивация логического тома.
|
||||||
|
- `vgchange -a y <volume-group>` — активация группы томов.
|
||||||
|
- `vgchange -a n <volume-group>` — деактивация группы томов.
|
||||||
|
- `vgcfgbackup <volume-group>` — создание резервной копии метаданных группы томов.
|
||||||
|
- `vgcfgrestore <volume-group>` — восстановление метаданных группы томов из резервной копии.
|
||||||
|
***
|
||||||
|
## Мета информация
|
||||||
|
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||||
|
**Родитель**:: [[Logical Volume Management|Logical Volume Management]]
|
||||||
|
**Источник**::
|
||||||
|
**Создана**:: [[2024-11-12]]
|
||||||
|
**Автор**::
|
||||||
|
### Дополнительные материалы
|
||||||
|
-
|
||||||
|
|
||||||
|
### Дочерние заметки
|
||||||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 77 KiB |
@ -0,0 +1 @@
|
|||||||
|
5860554aa3f9f9759e9335019e1fe84c
|
8
meta/zero/00 Головные мюсли.md
Normal file
8
meta/zero/00 Головные мюсли.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- type/zero-link
|
||||||
|
---
|
||||||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
|
||||||
|
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
|
||||||
|
- [[Исторически так сложилось]]
|
||||||
|
<!-- SerializedQuery END -->
|
42
muesli/Исторически так сложилось.md
Normal file
42
muesli/Исторически так сложилось.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
tags:
|
||||||
|
- maturity/🌱
|
||||||
|
- content/muesli
|
||||||
|
date: 2024-11-12
|
||||||
|
---
|
||||||
|
## Анекдот
|
||||||
|
Яша с утра спросил у супруги, почему она отрезает кончики сосисок, когда готовит их. «Не знаю, меня мама так научила, спроси у неё», — отвечает супруга. Яша оказался любопытным и пошёл к тёще. Он спросил: «Мама, почему действительно вы всё время кончики у сосисок отрезаете, когда варите?»
|
||||||
|
|
||||||
|
Она говорит: «Я не знаю, меня мама так научила. Если тебе интересно, позвони ей». Ну Яша такой любопытный, пошёл звонить. Звонит, говорит: «Ида Самуиловна, это Яша, ваша внучка (моя жена) и ваша дочь (моя тёща) всё время, когда варят сосиски, отрезают кончики и говорят, что это вы их научили. В чём смысл?»
|
||||||
|
|
||||||
|
«Вы что, до сих пор варите сосиски в той моей самой маленькой кастрюлечке?»
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
В старых проектах часто можно услышать фразу: "Исторически так сложилось". Это объяснение используется, когда никто уже не помнит, почему было принято какое-то решение, но все продолжают следовать этой практике. Как и в анекдоте, причина, по которой что-то делается именно так, теряется во времени, а изначальная необходимость, возможно, давно отпала.
|
||||||
|
|
||||||
|
Такие устаревшие решения могут быть следствием технических ограничений, которые были актуальны на момент создания системы, или обусловлены привычками и отсутствием времени на пересмотр принятых решений. С течением времени кодовая база разрастается, а оригинальные мотивации забываются. В итоге разработчики продолжают следовать устаревшим практикам, не подвергая их сомнению.
|
||||||
|
|
||||||
|
Ситуации, когда решение было принято "потому что так было удобно 10 лет назад", могут сдерживать развитие проекта и приводить к трудностям в поддержке и модернизации системы.
|
||||||
|
|
||||||
|
Разработка требует регулярного переосмысления архитектурных решений и устранения наследия, которое перестало приносить пользу. Периодически задавая вопрос "Почему это сделано именно так?", можно избежать накопления технического долга и упростить жизнь будущим разработчикам.
|
||||||
|
|
||||||
|
**Как бороться с наследием прошлого**
|
||||||
|
1. **Документировать решения**: Поддержка документации помогает понимать, почему определённое решение было принято, и облегчает пересмотр устаревших подходов. Например, Architecture decision log
|
||||||
|
2. **Регулярные ревизии кода**: Периодически пересматривайте старый код, чтобы выявлять и устранять неэффективные решения.
|
||||||
|
3. **Постоянное обучение команды**: Обучение помогает разработчикам понимать современные подходы и технологии, что позволяет быстрее определять устаревшие паттерны.
|
||||||
|
4. **Открытые обсуждения**: Создайте культуру, где команда может открыто задавать вопросы о текущих решениях и предлагать улучшения. Например TechTalk
|
||||||
|
***
|
||||||
|
## Мета информация
|
||||||
|
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Разработка|00 Разработка]]
|
||||||
|
**Родитель**::
|
||||||
|
**Источник**::
|
||||||
|
**Создана**:: [[2024-11-12]]
|
||||||
|
**Автор**::
|
||||||
|
### Дополнительные материалы
|
||||||
|
-
|
||||||
|
|
||||||
|
### Дочерние заметки
|
||||||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user