Рубрики
Uncategorized

Вопросы для интервью PHP для базы данных MySQL

Автор оригинала: David Wong.

Здравствуйте, насколько я помню, программист PHP брал интервью у автора серии письменных экзаменационных книг.

135 обновлений на этой неделе (с 4 по 3.8 марта 2019 года) выглядят следующим образом:

Понедельник: PHP Интервью Базовые знания базы данных MySQL Среда: PHP-интервью Индекс базы данных MySQL Пятница: PHP-Интервью Темы для интервью с базой данных MySQL

Сегодня пятница. Заранее желаю вам счастливых выходных.

Я сам организовал пьесу”. Что такое трехуровневый протокол блокировки базы данных? “Обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” блокировка Я пришлю его тебе.

Следующие разделы взяты из “Книга письменных тестов для интервью с программистом PHP” и “Анализ письменных тестовых вопросов для интервью с программистом PHP”. Если вам нужно воспроизвести, пожалуйста, укажите источник.

BEGIN TRANSACTION
DELETE FROM MYTABLE WHERE ID=1
DELETE FROM OTHERTABLE
ROLLBACK TRANSACTION

Содержимое в A. ДРУГАЯ ТАБЛИЦА будет удалена

Содержимое в B. ДРУГАЯ ТАБЛИЦА и МОЯ ТАБЛИЦА будут удалены

Содержимое в C. ДРУГАЯ ТАБЛИЦА будет удалена, а содержимое с идентификатором 1 в МОЕЙ ТАБЛИЦЕ будет удалено.

D. База данных не изменилась

Справочный ответ: D.

Анализ: Этот запрос является транзакцией, и транзакция откатывается в конце, база данных не изменится.

Процесс оптимизации базы данных может быть осуществлен следующими способами:

1) Выберите наиболее подходящие атрибуты поля, сведите к минимуму длину определенного поля и, насколько это возможно, установите поле НЕ равным нулю, например “происхождение, пол”, предпочтительно ПЕРЕЧИСЛЕНИЕ.

2) Используйте СОЕДИНЕНИЕ вместо подзапроса.

Удалить клиентов без каких-либо заказов: УДАЛИТЬ ИЗ customerinfo, ГДЕ идентификатор клиента ОТСУТСТВУЕТ(ВЫБЕРИТЕ идентификатор клиента ИЗ orderinfo).

(2) Извлеките всех клиентов без заказов:

 SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)。

(3) Оптимизация скорости улучшения b: ВЫБЕРИТЕ ИЗ customerinfo СЛЕВА ПРИСОЕДИНИТЬСЯ К идентификатору заказа customerinfo..идентификатор клиента, ГДЕ orderinfo.идентификатор клиента РАВЕН НУЛЮ.

3) Используйте объединение вместо созданных вручную временных таблиц. Создайте временную таблицу: ВЫБЕРИТЕ имя ИЗ ОБЪЕДИНЕНИЯ “имя теста” ВЫБЕРИТЕ имя пользователя ИЗ “имя теста 2”.

4) Обработка транзакций. Обеспечьте целостность данных, таких как добавление и изменение. В то же время, если оба они будут установлены, оба они будут выполнены, и ни один из них не удастся:

mysql_query("BEGIN");

mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";

mysql_query("SELECT * FROM 'orderinfo' where customerid=".$id");

mysql_query("COMMIT");


5) Заблокируйте таблицу и оптимизируйте обработку транзакций. Оператор SELECT используется для извлечения исходных данных. В результате некоторых вычислений новые значения обновляются в таблице с помощью инструкций UPDATE. Инструкция LOCK TABLE с ключевыми словами WRITE гарантирует, что до выполнения команды РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ не будет другого доступа для вставки, обновления или удаления таблицы customerinfo.

mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

mysql_query("SELECT customerid FROM 'customerinfo' where id=".$id);

mysql_query("UPDATE 'orderinfo' SET ordertitle='$title' where customerid=".$id);

mysql_query("UNLOCK TABLES");


6) Оптимизируйте таблицу блокировок с помощью внешних ключей. Сопоставьте идентификатор клиента в информации о клиенте с идентификатором клиента в информации о заказе, и любая запись без юридического идентификатора клиента не будет записана в orderinfo.

 CREATE TABLE customerinfo

   (

     customerid INT NOT NULL,

     PRIMARY KEY(customerid)  

   )TYPE = INNODB;

   CREATE TABLE orderinfo

   (

     orderid INT NOT NULL,

     customerid INT NOT NULL,

     PRIMARY KEY(customerid,orderid),

     FOREIGN KEY (customerid) REFERENCES customerinfo

     (customerid) ON DELETE CASCADE   

   )TYPE = INNODB;


Примечание: “ПРИ УДАЛЕНИИ КАСКАДА”, что гарантирует, что при удалении записи в таблице customerinfo заказ также удаляется.

Обратите внимание, что компонент database engine определяется как INNODB при использовании внешних ключей для всех записей пользователя в таблице.

В MySQL есть два механизма хранения данных: MyISAM и InnoDB. У каждого двигателя есть свои преимущества и недостатки.

MyISAM подходит для приложений, требующих большого количества запросов, но его поддержка большого количества операций записи не очень хороша. Даже если требуется обновить только одно поле, вся таблица будет заблокирована, в то время как другие процессы, даже процесс чтения, не смогут работать до завершения операции чтения. Кроме того, Myisam вычисляет количество ВЫБРАННЫХ (*) чрезвычайно быстро.

Тенденция InnoDB будет заключаться в том, чтобы быть очень сложным механизмом хранения, который будет медленнее, чем MyISAM для некоторых небольших приложений. Но он поддерживает “блокировку строки”, поэтому будет лучше, когда будет больше операций записи. Он также поддерживает более продвинутые приложения, такие как транзакции.

Справочный ответ: Метод проверки эффективности выполнения PHP-скриптов заключается в следующем: вы можете записать время в начале проверяемого кода, затем записать время в конце кода, вычесть время начала, чтобы получить разницу этого времени, чтобы проверить эффективность выполнения PHP-скриптов, и записать время с помощью функции microtime ().

Способы проверки эффективности SQL базы данных заключаются в следующем: MySQL может использовать индекс для обработки инструкций select и объединения таблиц, объясняя, чтобы помочь выбрать лучшие индексы и написать более оптимизированные инструкции запроса. Затем включается журнал медленных запросов для записи медленных запросов, и проблема и узкое место выполнения скрипта определяются путем анализа времени выполнения и эффективности SQL.

Я сам организовал пьесу”. Что такое трехуровневый протокол блокировки базы данных? “Обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” блокировка Я пришлю его тебе.

A. Использование индексов может ускорить вставку данных

B. Хорошая стратегия индексирования помогает предотвратить атаки между станциями

C. Индекс должен быть разработан разумно в соответствии с практическим применением базы данных.

D. Удаление записи приведет к уничтожению индекса всей таблицы

Справочный ответ: С.

Анализ: Основная функция индекса-помочь базе данных быстро найти соответствующие данные, но не ускорить вставку данных, поэтому вариант А неверен.

Индексирование не помогает предотвратить атаки между сайтами, поэтому вариант B неверен.

Создание разумного индекса требует анализа фактического использования базы данных и выявления ее слабых мест. Оптимизация избыточных запросов в сценариях также может повысить эффективность базы данных. Индекс занимает физическое пространство, поэтому необходимо разумно спроектировать и использовать индекс в практическом применении. Таким образом, вариант C является правильным.

Индекс – это структура таблицы. Удаление одного фрагмента данных не влияет на индекс всей таблицы, и индекс не обязательно является числом, он также может быть строкой. Так что вариант D неверен.

A. Sphinx-это полнотекстовая поисковая система, основанная на SQL, которая может объединять MySQL для выполнения полнотекстового поиска. Он может обеспечить более профессиональную функцию поиска, чем сама база данных.

B. Solr-это новое поколение компонентов полнотекстового поиска, которое намного эффективнее, чем поиск Lucene, и может поддерживать режим доступа HTTP. Также PHP удобно вызывать Solr.

Полнотекстовый поиск может быть достигнут путем создания полнотекстового индекса поля в C. MySQL. В настоящее время таблицы MyISAM и InnoDB поддерживают ПОЛНОТЕКСТОВЫЙ индекс.

CJKAnalyzer для анализа сегментации двоичных слов, подключенный к D. Lucene, обеспечивает быструю сегментацию слов и может удовлетворить общие потребности в полнотекстовом поиске.

Справочный ответ: Б.

Анализ: Sphinx-это полнотекстовая поисковая система, основанная на SQL, которая может сочетать MySQL и PostgreSQL для выполнения полнотекстового поиска. Он может обеспечить более профессиональную функцию поиска, чем сама база данных, что облегчает приложению профессиональный полнотекстовый поиск.

Solr-это независимый сервер корпоративных поисковых приложений. Пользователи могут получить к нему доступ через HTTP-запросы. Он разработан JAVA 5 и расширяет сервер полнотекстового поиска на основе Lucene. Он обеспечивает более богатый язык запросов, чем Lucene, реализует конфигурируемость, расширяемость, оптимизирует производительность запросов и обеспечивает идеальное управление функциями. Интерфейс-очень хорошая полнотекстовая поисковая система. И Solr намного эффективнее, чем Lucene, но PHP вызывает Solr неудобно, вариант B неверен.

MyISAM и InnoDB в MySQL поддерживают полнотекстовое полнотекстовое индексирование. Полнотекстовые поисковые системы могут находить слова или фразы без использования операций сопоставления шаблонов.

ВЫБЕРИТЕ * ИЗ МОЕЙ ТАБЛИЦЫ

A. По возможности преобразуйте запросы в процедуры хранения

B. Если программа позволяет, укажите диапазон записей, возвращаемых в запрос

C. Если возможно, добавьте условие где

D. Преобразуйте запросы в представления, если СУБД позволяет

Справочные ответы: B, C.

Анализ: Существует два способа ограничить количество возвращаемых записей — указать диапазон записей, возвращаемых запросом, используя условия where или ключевые слова limit.

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

Выше приведены выдержки из “Книга письменных тестов для интервью с программистом PHP” и “Анализ письменных тестовых вопросов для интервью с программистом PHP”. Книги, в настоящее время не существует электронной версии книги, можно приобрести на основных платформах электронной коммерции в бумажной версии. Дополнительные знания об интервью и экзаменационные вопросы, связанные с PHP, могут быть связаны с приобретением общедоступного номера: Библиотека программирования Ryueyi Любые вопросы или предложения в этой статье можно оставить в сообщении, я буду продолжать совершенствовать стремление к максимальному, спасибо за вашу поддержку.

Оригинал: “https://developpaper.com/php-interview-questions-for-mysql-database/”