Определите минимальную задержку прибытия с помощью большого набора полетных данных, хранящихся в базе данных. Доступ к базе данных с помощью параллельного пула.
Чтобы инициализировать параллельный пул с подключением к базе данных JDBC, необходимо настроить источник данных JDBC. Дополнительные сведения см. в разделе configureJDBCDataSource функция.
Использование splitsqlquery можно разделить исходный SQL-запрос на несколько запросов SQL-страниц. Затем можно получить доступ к большим данным по частям, выполнив каждый запрос страницы SQL на отдельном работнике в пуле.
При импорте больших данных производительность зависит от SQL-запроса, объема данных, спецификаций компьютера и типа анализа данных. Для управления производительностью используйте splitsize входной аргумент splitsqlquery функция.
При наличии лицензии MATLAB ® Parallel Server™ используйте parpool (Parallel Computing Toolbox) с выбранным профилем кластера вместо gcp (Parallel Computing Toolbox) функция.
Создание подключения базы данных к источнику данных JDBC MSSQLServerJDBCAuth. Этот источник данных настраивает драйвер JDBC для базы данных Microsoft ® SQL Server ® с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль.
Определите SQL-запрос для выбора всех столбцов из airlinesmall таблица, содержащая 123 523 строки и 29 столбцов.
Разбейте исходный SQL-запрос на несколько страниц и просмотрите их. Укажите размер разделения 10 000 строк.
querybasket =
13×1 string array
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 0 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 10000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 20000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 30000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 40000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 50000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 60000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 70000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 80000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 90000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 100000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 110000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 120000 ROWS FETCH NEXT 3523 ROWS ONLY"
Корзина запросов содержит запросы страниц в массиве строк. Каждый SQL-запрос в корзине, за исключением последнего, возвращает 10 000 строк.
Закройте подключение к базе данных.
Запустите параллельный пул.
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
Инициализируйте параллельный пул с помощью источника данных JDBC.
Определите airlinesdata переменная.
Определение минимальной задержки поступления minArrDelay переменная.
Используйте parfor функция параллелизма доступа к данным с использованием корзины запросов.
Для каждого работника:
Получить объект подключения к базе данных.
Выполните запрос страницы SQL из корзины запросов и импортируйте данные локально.
Найдите локальную минимальную задержку поступления.
Сохраните локальную минимальную задержку поступления.
Найдите минимальную задержку поступления, используя сохраненные задержки от каждого работника.
Закройте параллельный пул.