Skip to main content

Using filesort; Using temporary

При выполнении explain в колонке Extra иногда значатся Using filesort; Using temporary.

Что бы это значило? Хороший ответ на английском What does Using filesort mean in MySQL?
Его перевод на русский с дополнениями:

Если в памяти создается временная таблица, хранящая результаты запроса, то это Using temporary. Временная таблица может быть сохранена на диск, если она слишком велика, чтобы поместиться в память.
// TODO: слишком велика - это сколько? по какой еще причине она может быть записана на диск?

Каждый раз, когда сортировка не может быть выполнена по индексу, это using filesort. Плохое имя заставляет нас думать о файлах, но они тут не при чем. Filesort могла бы называться просто sort. На самом деле это quicksort.

Если сортировка больше, чем "sort buffer" (?), то она выполняется по частям. Объем памяти, выделяемый для filesort(), хранится в переменной @@sort_buffer_sizeЕсли сортируемые данные не помещаются в эту память, filesort будет использовать временные файлы, чтобы отсортировать данные по частям. Затем происходит слияние отсортированных частей.

Еще можно почитать Sergey Petrunia’s article on How MySQL executes ORDER BY

Comments

Popular posts from this blog

Блочный, строчный, ...

Сборник советов: 1. Прижать элемент к нижнему краю контейнера: 2 . Две колонки: 3 . Что означает символ ">" в селекторе? Означает, что будут выбраны только прямые потомки. По-умному, direct descendant combinator. Иными словами, если есть: То "div a {color: blue;}" изменит цвет всех ссылок, а "div > a {color: blue;}" - только первой и третьей. 4 . TODO

Hibernate

1. Hibernate Session . Javadoc называет её главным интерфейсом между java-приложением и Hibernate. Иногда её называют единицей работы или логической транзакцией. Основная функция сессии - обеспечить операции создания, чтения, удаления объектов. Объекты могут находиться в одном из 3 состояний (см. 2) Сессия создается с помощью SessionFactory. SessionFactory знает конфигурацию ORM, её внутреннее состояния immutable. При вызове Configuration().configure() загружается файл hibernate.cfg.xml. После того, как конфигурация загружена, можно изменить настройки программно. Данные корректировки возможны только до создания экземпляра фабрики сессий. // Initialize the Hibernate environment Configuration cfg = new Configuration().configure(); // Create the session factory ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); ServiceRegistry sr = srb.applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(sr); // Obtain the new session obj...

Android Support Library + Maven + Eclipse

Допустим, мы хотим ActionBar в нашем android приложении. Но минимальная версия, которую мы хотим поддерживать, 2.3, и никакого ActionBar там ещё нет. Android Support Library позволяет использовать некоторые новые компоненты в старых версиях. В данном случае нам нужна Android Support Library  v7 appcompat. 1. Такой dependency в репозитории нет.  Maven Android SDK Deployer  позволяет помещать в локальный репозиторий dependency из локальной Android SDK. Если мы разрабатываем для android-4.3, то можем сгенерировать артефакты только для этой версии: mvn install -P 4.3 Кажется, для этого потребуется установить и версию sdk - 17. Если maven install упадет с ошибкой, то там будет написана причина. Если зайти в локальный репозиторий, то там появятся артефакты в папке: .m2\repository\android\support\compatibility-v7-appcompat\18 2. Подключим зависимости в pom.xml нашего app: <dependency> <groupId>android.support</groupId> <artifactId>compati...