Производительность хранилища данных GAE (столбец против ListProperty) - PullRequest
1 голос
/ 18 января 2011

После просмотра " Google IO 2009: создание масштабируемых, сложных приложений на App Engine " я провел несколько тестов, чтобы понять влияние на десериализацию списка, но результаты довольно удивительны.Ниже приведены описания тестов.

  • Все тесты выполняются на сервере GAE.
  • Каждый тест выполняется 5 раз с указанием времени и загрузки процессора.
  • Этопроверка заключается в сравнении скорости выборки (float) данных в столбцах VS List
  • Таблицы Column и List содержат дополнительный столбец datetime для запроса.
  • Один и тот же запрос используется для извлечения данных в обоихТаблицы столбцов и списков.

ТЕСТ 1
- выборка одной строки
- размер таблицы: 500 столбцов и список 500 (оба содержат 500 строк)

Таблица: ChartTestDbRdFt500C500R <- 500 столбцов x 500 строк <br>OneRowCol Result <- выборка одной строки <br>[0] 0,02 (52) <- тест 0, затраченное время = 0,02, загрузка ЦП =52 <br>[1] 0,02 (60)
[2] 0,02 (56)
[3] 0,01 (46)
[4] 0,02 (57)

Таблица: ChartTestDbRdFt500L500R<- список 500 х 500 строк <br>Результат OneRowLst
[0] 0,01 (40)
[1] 0,02 (38)
[2] 0,01 (42)
[3]0,05 (154)
[4] 0,01(41)

ТЕСТ 2
- выбор всех строк
- размер таблицы: 500 столбцов и список из 500 (оба содержат 500 строк)

таблица: ChartTestDbRdFt500C500R
Результат AllRowCol
[0] 11,54 (32753)
[1] 10,99 (31140)
[2] 11,07 (31245)
[3] 11,55 (37177)
[4] 10,96 (34300)

Таблица: ChartTestDbRdFt500L500R
AllRowLst Результат
[0] 7,46 (20872)
[1] 7,02 (19632)
[2] 6,8 (18967))
[3] 6,33 (17709)
[4] 6,81 (19006)

ТЕСТ 3
- извлечение одной строки
- размер таблицы: 4500Столбцы против списка 4500 (оба содержат 10 строк)

Таблица: ChartTestDbRdFt4500C10R
Результат OneRowCol
[0] 0,15 (419)
[1] 0,15 (433)
[2] 0,15 (415)
[3] 0,23 (619)
[4] 0,14 (415)

Таблица: ChartTestDbRdFt4500L10R
Результат OneRowLst
[0] 0,08 (212)
[1] 0,16 (476)
[2] 0,07 (215)
[3] 0,09 (242)
[4] 0,08 (217)

ЗАКЛЮЧЕНИЕ

Получение списка N элементов на самом деле быстрее, чем N столбцов.Кто-нибудь знает, почему это так?Я думал, что есть потеря производительности в десериализации списка?Или я выполнил свои тесты неправильно?Любое понимание будет полезно, спасибо!

1 Ответ

1 голос
/ 18 января 2011

BigTable - это база данных, ориентированная на столбцы.

Это означает, что выборка «строки» из N столбцов - это фактически N разных операций чтения, все по одному индексу.

...