This commit is contained in:
parent
516c330dc2
commit
7ef1ee250f
@ -9,7 +9,7 @@ date: 2024-03-31
|
||||
**Особенности:**
|
||||
- Для **первичного ключа** индекс создается автоматически.
|
||||
- Можно **отключить автоматическое обновление индекса** и настроить обновление вручную.
|
||||
- **Распухание индексов** (bloat) — это проблема увеличения размера индексов со временем, требующая переиндексации.
|
||||
- **Распухание индексов** ([[Раздутие таблиц|bloat]]) — это проблема увеличения размера индексов со временем, требующая переиндексации.
|
||||
|
||||
- [[Создание индекса в PostgreSQL]]
|
||||
- [[../Частичный индекс|Частичный индекс]]
|
||||
@ -24,8 +24,8 @@ date: 2024-03-31
|
||||
- [[BRIN индекс в PostgreSQL|BRIN индекс]]
|
||||
|
||||
**Влияние обновления строки на индекс**
|
||||
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum.
|
||||
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum.
|
||||
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать - [[Autovacuum]].
|
||||
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать vacuum.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../../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