Nano Hash - криптовалюты, майнинг, программирование

Нужно ли нам по-прежнему беспокоиться о фрагментации строк при использовании флэш-памяти?

Фрагментация строк всегда была тем, о чем вам нужно было думать при выборе типов данных char/varchar2 для столбцов таблицы, при выполнении пакетных операций удаления/вставки/обновления в таблицах, потому что Oracle пытается разместить новые данные в открытых свободных пространствах, и поэтому фрагментация может начать замедляться. снижение производительности в какой-то момент. Сейчас все изменилось с флеш-накопителями, потому что данные записываются максимально фрагментировано из-за самой флеш-технологии. Если нам не нужно заботиться о фрагментации, то это нарушает все понимание проблем хранения табличных данных и фрагментации данных. У кого-нибудь есть опыт хранения файлов базы данных на флэш-накопителях? Исчезла ли проблема фрагментации с ssd-дисками?


Ответы:


1

Не существует такой вещи, как «фрагментация строк», как вы ее описываете, и, на самом деле, это никогда не должно определять ваш выбор типов данных char или varchar2. Ваш выбор типа данных должен зависеть от характера данных и от того, действительно ли это фиксированная ширина или переменная ширина. В 99,9% случаев вам следует предпочесть varchar2.

Наименьшая единица ввода-вывода, которую Oracle может читать или записывать, — это блок. Блок обычно имеет размер 8 КБ (хотя он может быть размером от 2 КБ до 32 КБ). Блок обычно хранит данные для нескольких строк. Поскольку Oracle должен каждый раз записывать весь блок целиком, не имеет значения, нужно ли ему перемещать данные внутри блока.

Внутри блока Oracle резервирует определенное пространство для будущего роста. Это контролируется настройкой PCTFREE таблицы. Если вы ожидаете, что ваши строки со временем существенно вырастут, вы должны использовать большое значение PCTFREE. Если вы ожидаете, что ваши строки будут иметь статический размер с течением времени, вы должны использовать небольшой PCTFREE. Вы не хотели бы настраивать свои типы данных, чтобы предотвратить изменение размера строк, вы хотели бы настроить PCTFREE таблицы, чтобы она соответствовала любым ожидаемым вами изменениям.

Если в Oracle заканчивается место в блоке для определенной строки (например, если строку нужно увеличить, а PCTFREE было установлено слишком мало), Oracle необходимо перенести строку в новый блок. Это означает, что он оставляет указатель в исходном блоке, который указывает на новый блок, и перемещает фактические данные в новый блок. Это может создать проблемы с производительностью, так как теперь вам нужно посетить старый блок и новый блок, чтобы прочитать строку, если вы читаете из индекса, в зависимости от того, какая часть строк в таблице перенесена. Вы также можете столкнуться с проблемами со связанными строками, если у вас есть строки, которые больше, чем ваши блоки, или строки, которые имеют более 255 столбцов, что вынуждает Oracle выполнять дополнительный ввод-вывод, но это, похоже, не то, что вас беспокоит здесь .

Независимо от системы хранения вы хотите установить PCTFREE своей таблицы соответствующим образом, чтобы свести к минимуму количество переносов строк, происходящих с течением времени (существуют и другие способы минимизировать перенос строк в некоторых крайних случаях, но в 99 % случаев вы действительно просто хочу правильно установить PCTFREE). Используйте подходящие типы данных для данных, которые вы пытаетесь сохранить, и не позволяйте беспокойству о переносе строк влиять на ваш выбор типов данных.

25.11.2013
  • Я предполагаю, что автоматическое управление хранилищем сегментов (ASSM) автоматически управляет PCTFREE, поэтому вам нужно установить PCTFREE при использовании старого типа хранилища MSSM? 26.11.2013
  • @Centurion - Нет. ASSM автоматически обрабатывает то, что было обработано параметром PCTUSED в ручном управлении пространством сегмента. Оба типа табличных пространств зависят от настройки таблицы PCTFREE. Было бы очень сложно автоматически управлять PCTFREE, так как система не может знать, как размер строк будет меняться с течением времени — это то, что изначально знает только специалист по моделированию данных. 26.11.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..