2015-09-02 2 views
1

Все, у меня есть веб-страница, которая загружает данные из 4-6 таблиц в 4 базы данных Oracle для примерно 10 схем по запросу. То, что я имею установку это требует в верхней части страницы, такие как:PHP: одновременный запрос нескольких баз данных для увеличения времени загрузки

<?php 
require_once('src/connects_client1.php'); 
require_once('src/connects_client2.php'); 
require_once('src/connects_client3.php'); 
require_once('src/connects_client4.php'); 
?> 

Каждый из этих файлов содержит строку соединения, такие как:

$connClient = oci_pconnect("Login", "Password", "//database:1521"); 

и ряд запросов и выполняет такие как :

$dailystatusClientSCHEMA = oci_parse($connClient, 'select * from OPS$SCHEMA.DAILY_STATUS order by table_name'); 

oci_execute($dailystatusClientSCHEMA); 

Это то часть зрения на основе Jquery дерева с серией неупорядоченных списков и цикл по каждому элементу PHP, который печатает каждую строку данных соответственно для результатов запроса.

Некоторые из наборов результатов содержат более тысячи строк данных. Это работает и отображает данные в удобном для использования формате.

Проблема в загрузке. Требуется 1 минута 52 секунды. Конечный пользователь для этого в компании думает, что это слишком долго, и, честно говоря, я думаю, что это слишком долго. Я не веб-разработчик, но было логично, что этот проект попадает в нашу команду, так что я здесь.

Есть ли способ, которым я могу заставить все запросы загружаться более одновременным образом, чтобы данные могли быть возвращены быстрее? Это ОЧЕНЬ быстрая среда Exadata, поэтому я не верю, что в БД есть узкое место, и веб-сервер имеет легкую нагрузку в любой момент времени, поэтому я не думаю, что есть предел там, только в том, как я построил эта страница.

Я очень благодарен за любое решение, которое может быть предоставлено.

Спасибо.

+1

Возможно, сравните различные части сценария с запросами на все, что еще есть на странице, чтобы найти место узкого места. Это может быть либо запрос, вытягивание наборов результатов, либо даже ожидание загрузки таблицы данных jquery. Возможно, быстрее запросить данные, сохранить их в сеансе и выполнить paginate через это через ajax с клиентской стороны. В любом случае, во-первых, это первое испытание, использующее microtime, чтобы найти то, что вызывает узкое место и сосредоточиться на этом. –

ответ

0

есть бутылочное горлышко на select * попробуйте изменить что поля вы действительно заинтересованы.

РБД должен работать, что поля, чтобы вернуться, что их имена и типы данных и как выделить память. Используя именованные поля, RDBS не должен определять, какие поля присутствуют в запрошенных вами таблицах.

+0

Я дам этот снимок, хотя все мои исследования показали, что я не использовал select * для возможных изменений в структуре таблицы, но имел место разница в производительности в запросе, выбирающем определенные столбцы против * – billhubb84

+0

Обновление: Да, время загрузки остается в значительной степени неизменным, фактически на основе моего секундомера он фактически загружается медленнее. Тем не менее, я ценю ваши отзывы и рад, что я переписал запросы, чтобы не выбирать * – billhubb84

Смежные вопросы