#mysql #sql
#mysql #sql
Вопрос:
Я где-то читал, что существует руководящий принцип ограничения количества строк в таблицах до уровня ниже 1 миллиона. Мне было интересно, правда ли это. Для проекта, который у меня есть, у меня будут примерно таблицы с 10 000 строк, 40 000 строк, 160 000 строк и 100 000 строк соответственно. Какую производительность я мог ожидать на 4-ядерном компьютере с 8 ГБ для этого? (Я знаю, что некоторые люди получали 20 тыс. запросов в секунду)
Комментарии:
1. Есть ли способ, которым я мог бы фактически загрузить фиктивные данные для проверки этого?
2. Конечно, посмотрите на схему таблицы, которую вы ожидаете заполнить миллионом строк. Вы можете игнорировать столбцы с нулевым значением по понятным причинам. Для ненулевых столбцов составьте некоторые данные, подходящие для столбца. Там, где вам нужно увеличивающееся или другое уникальное значение, просто используйте счетчик.
Ответ №1:
Число в миллион является фиктивным. Я запускал экземпляры MySQL с таблицами, которые содержат 20 миллионов строк и более дюжины столбцов. Запросы были не быстрыми, но приложение обрабатывало данные в автономном режиме, а производительность была более чем адекватной.
Вы должны сравнить запросы в своей собственной системе, чтобы определить ее производительность. Я ничего не могу сказать вам о системе с «4 ядрами, 8 ГБ», кроме того факта, что 8 ГБ — хорошая отправная точка для большого сервера баз данных (вы должны иметь возможность хранить свои индексы в памяти, а таблицы меньшего размера также могут поместиться в памяти). Четырех ядер может быть достаточно для процессора, но может и не быть. Это полностью зависит от того, какие они ядра.
Вы также не должны игнорировать производительность диска, особенно если ваши таблицы не помещаются в оперативную память. Я думаю, что на машине, на которой у меня было 20 миллионов строк, был массив RAID 1 0 из 15 тыс. оборотов в минуту. диски.
Но не воспринимайте мои комментарии как означающие, что вам нужно больше оперативной памяти, больше процессоров или более быстрые диски. Запустите несколько тестов в своей собственной системе. Убедитесь, что в вашей системе есть соответствующая схема для ваших запросов. Убедитесь, что у вас как можно меньше подзапросов и представлений (результаты не индексируются). Убедитесь, что ваши таблицы правильно проиндексированы. Затем посмотрите на свою производительность и аппаратное обеспечение.
Комментарии:
1. В дополнение к этому проверьте, как вы объединяетесь. Довольно легко получить некоторые временные таблицы с огромным количеством строк, если вы выполните полное декартово соединение.
2. да, будет сделано, я просто хотел бы, чтобы я мог добавить фиктивные данные для быстрого тестирования.
3. Просто напишите немного кода для генерации фиктивных данных для ваших строк, а затем вставляйте, пока у вас не будет достаточно. Это также хорошая практика для ваших интеграционных тестов. У вас есть интеграционные тесты, верно?
4. да, я провожу интеграционные тесты :). На самом деле я специалист по интерфейсу, но это первый побочный проект, в котором я полностью принимаю сторону mysql
5. Вы понимаете, как генерировать некоторые фиктивные данные?