Это может быть вопрос новичка, но мне любопытно:
Как база данных может обрабатывать несколько одновременных запросов, в первую очередь операций чтения? Каждый запрос помещается в очередь, чтобы он действительно выполнялся по одному? Или с многоядерным процессором можно действительно обрабатывать несколько запросов одновременно?
Я предполагаю, что очевидным расширением этого вопроса будет: насколько многоядерный процессор имеет значение для сервера базы данных?
Я специально думаю о MS SQL Server 2008, но этот вопрос, вероятно, применим к большинству серверов баз данных.
Внутреннее устройство выполнения описано в нескольких разделах MSDN.
Также блог Славы, начиная с SQLOS - развязанный имеет много информации.
Чтобы понять основы, хорошей отправной точкой является Обработка транзакций: концепции и методы.
Краткий синтез будет выглядеть так: каждый пакет SQL создает запрос. Запросы принимаются задача и задачи выполняются рабочий. Вы можете думать о воркерах как о потоках (есть некоторые отличия). Это означает, что пакет (= запрос) выполняется в одном потоке. Некоторым операторам внутри пакета может быть выгодно параллельное выполнение, эти операторы будут выполняться для нескольких задач, см. Параллельная обработка запросов.
Чтобы ответить, принесут ли пользу базе данных несколько процессоров: это зависит от обстоятельств. Я бы сказал, что "добавление ЦП к рабочей нагрузке, связанной с процессором, увеличит пропускную способность и производительность рабочей нагрузки".
Существует множество различных ресурсов, которые используются для предоставления службы базы данных (ЦП, записи на диске, места в памяти и т. Д.), И всякий раз, когда возникает разногласие, да, все, что необходимо для использования этого ресурса, оказывается в очереди. Когда нет конкуренции (два потока в многоядерной системе, попытки доступа к разным записям в таблице), эти запросы могут выполняться параллельно, пока они снова не будут бороться за какой-либо ресурс.