Большие таблицы MySQL

голоса
3

Для веб-приложения, я развивающихся, мне нужно хранить большое количество записей. Каждая запись будет состоять из первичного ключа и одного короткого (МОГ) строковое значение. Я ожидаю, чтобы иметь о хранении 100GB доступного и хотел бы иметь возможность использовать все это.

Записи будут вставлены, удалены и читать часто и я должен использовать базу данных MySQL. Целостность данных не критично, но производительность. Какие проблемы и подводные камни, я, вероятно, столкнуться и которые хранения двигатель будет лучше всего подходит для этой задачи?

Большое спасибо, J

Задан 09/12/2008 в 20:58
источник пользователем
На других языках...                            


6 ответов

голоса
5

Какое бы решение вы используете, так как вы говорите, ваша база данных будет написать тяжелый вам нужно убедиться, что вся таблица не запертыми на записи. Это исключает MyISAM, которые некоторые из них предложили. MyISAM будет блокировать таблицу на обновления, удаления или вставки. Это означает, что любой клиент, который хочет читать из таблицы придется ждать записи, чтобы закончить. Dunno что ВСТАВИТЬ ИГНОРИРУЙТЕ НИЗКИЙ ПРИОРИТЕТ делает, хотя, вероятно, какой-то хак вокруг стола-запирающего :-)

Если вы просто должны использовать MySQL, вы хотите InnoDB, который не блокирует при записи. Я не знаю, как MySQL делает InnoDB таблицы VACUUM в InnoDB (это MVCC как PostgreSQL и поэтому необходимо очистить) ... но вы должны принять во внимание, что если вы делаете много обновлений и удалений.

Ответил 25/02/2009 в 22:23
источник пользователем

голоса
3

Это все зависит чтения / записи шаблона ваше приложение генерации, и уровень точности вы хотите получить. Для Exemple, если вы на самом деле не волнует, имеющие все последние вставленных строк сразу же доступны, рекомендуется использовать INSERT IGNORE LOW ПРИОРИТЕТ может помочь ВЫБИРАЕТ. Если размер текста является относительно небольшим, вы можете использовать фиксированный тип CHAR, который поможет индексации много и сократить время SELECT, Если ваше приложение генерирует много обновлений, вы предпочитаете механизм хранения InnoDB, который позволяет заблокировать только одну строку, обновление (против всех таблицы на MyISAM). С другой стороны, его более ресурсоемкие, так что если вы не используете транзакции, и что ваш шаблон обновления является относительно небольшим, рассмотреть вопрос об использовании MyISAM

Ответил 10/12/2008 в 17:07
источник пользователем

голоса
1

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

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

Кроме того, убедитесь, что вы делаете собственное тестирование, чтобы настроить ваши размеры памяти. Я считаю, что MySQL имеет несколько различных типов кэшей из которых вы можете настроить размер.

Ответил 09/12/2008 в 21:05
источник пользователем

голоса
0

Вы гораздо лучше, если «коротковатая строка» находится в фиксированном столбце длиной, так что таблица фиксированной строку длины. MySQL с MyISAM будет работать достаточно эффективно для вас тогда. Выделяют столько памяти, сколько вы можете для ключевого буфера, так что большая часть индекса в памяти. Ваша цель должна быть единый с произвольным доступом к диску для получения одной строки - вы не можете сделать лучше, чем данный 100GB данных и 8 Гб оперативной памяти. Вы не должны ожидать, чтобы достичь большего, чем несколько сотен таких запросов в секунду, потому что это все случайного доступа диск может сделать.

Вы можете быть заинтересованы в моей MySQL двигатель пользовательских хранения (описано здесь ). Она управляет памятью в отличие от MyISAM, хотя профиль вашего приложения не то , что мой двигатель был оптимизирован для.

Ответил 21/03/2009 в 14:47
источник пользователем

голоса
0

большие запросы MySQL сделать мою аварию Quad Core / 8GB Ram DB сервера ...

Решение заключается в использовании PostgresSQL (SQL Server, если вы можете себе это позволить)

Ответил 09/12/2008 в 21:20
источник пользователем

голоса
0

Вы определенно хотите использовать MyISAM для хранения двигателя. Но вы говорите, что вы ожидаете 100 ГБ и будет содержать только короткий иш строкового значения. Вы определенно хотите использовать 64-битный Int для идентичности / первичного ключа.

Но мой реальный вопрос. Вы используете это для хранения информации о сеансе с веб-сайта? Если так что вы хотите хотите использовать Memcache вместо MySQL.

Ответил 09/12/2008 в 21:16
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more