SQL Server ссылается на вычисляемый столбец

Без канала связи нет гарантированного метода предотвращения чтения с нулевым байтом или даже длительных периодов зависания без чтения каких-либо данных при чтении файла, который активно записывается. Реализация Linux tail использует inotify для эффективного создания канала связи и получения информации о активности записи файла.

Это довольно интересная проблема для того, чтобы IBM даже опубликовала Redbook , описывающий реализацию, которая смогла выполнить такую ​​«чтение-запись-запись» со скоростью около 15 ГБ / с:

Read-behind-write - это метод, используемый некоторыми высококлассными клиентам снизить латентность и повысить производительность. Техника чтения-записи-записи означает, что, как только писатель начнет писать, читатель сразу зайдет позади, чтобы прочитать; идея состоит в том, чтобы наложить время записи на время чтения. Эта концепция полезна для машин с медленной производительностью ввода-вывода. Для высокопроизводительной машины ввода-вывода, такой как pSeries 690, может быть стоит рассмотреть возможность первой записи всего файла в параллель, а затем повторного считывания данных.

Существует много способов считывания данных -write можно реализовать. В схеме, реализованной Xdd, после того, как писатель пишет одну запись, она будет ждать, пока читатель прочитает эту запись до того, как писатель сможет продолжить. Несмотря на то, что эта схема позволяет синхронизировать запись и считыватель только с одной записью, требуется системное время для блокировки и синхронизации между писателем и читателем.

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

blockquote>

Без канала связи вам остается много продолжать, возможно, вызывая sleep() или что-то подобное после нескольких результатов с нулевым байтом read().

26
задан Michael Haren 6 January 2009 в 06:09
поделиться

4 ответа

Нет.

Все результаты единственной строки от выбора являются атомарными. Таким образом, можно просмотреть их всех, как будто они происходят параллельно и не могут зависеть друг от друга.

, Если Вы обращаетесь к вычисляемым столбцам, тогда необходимо обновить вход формулы для результата измениться во время выбора.

Думают о вычисляемых столбцах как о макросах или мини-представлениях, которые вводят немного вычисления каждый раз, когда Вы называете их.

, Например, эти столбцы будут идентичны, всегда:

-- assume that 'Calc' is a computed column equal to Salaray*.25
SELECT Calc, Salary*.25 Calc2 FROM YourTable

Также имеют в виду, что persisted опция не изменяет ни одного из этого. Это сохраняет значение, вокруг которого хорошо для индексации, но атомарность не изменяется.

21
ответ дан Michael Haren 25 September 2019 в 07:31
поделиться

К сожалению, не действительно, но обходное решение, которое иногда стоит того,

SELECT [calcval1], [calcval1] * .25 AS [calcval2]
FROM (SELECT [calcval1] = CASE Statement FROM whatever WHERE whatever)
11
ответ дан erikkallen 25 September 2019 в 07:31
поделиться

Двумя путями я могу думать, чтобы сделать это. Сначала поймите, что calval1 столбец не существует, насколько SQL Server затронут, пока оператор не работал, поэтому это не может непосредственно использоваться в качестве showning Ваш пример. Таким образом, можно поместить вычисление там дважды, однажды для calval1 и однажды как замена на calcval1 в calval2 вычислении. Другой путь состоит в том, чтобы сделать полученную таблицу с calval1 в нем и затем вычислить calval2 вне полученной таблицы что-то как:

select calcval1*.25 as calval2, calval1, field1, field2
from (select casestament as cavlval1, field1, field2 from my table) a

необходимо будет протестировать обоих на производительность.

3
ответ дан C B 25 September 2019 в 07:31
поделиться

Вы не можете "сбросить" значение вычисляемого столбца в Избранном пункте, если это - то, что Вы пытаетесь сделать... Значение вычисляемого столбца основано на формулах вычисляемого столбца. Какой CAN включают значение другого вычисляемого столбца...., но Вы, canlt сбрасывают формулы в Избранном пункте..., если все Вы хотите сделать, "производитесь" значение на основе двух вычисляемых столбцов, (поскольку синтаксис в Ваших чтениях вопроса" Тогда" [calcval2]"
в

SELECT [calcval1] = CASE Statement, [calcval2] = [calcval1] * .25 

просто стал бы псевдонимом столбца в выводе Избранного Пункта.

или Вы спрашиваете, как определить формулы для одного вычисляемого столбца, чтобы быть основанными на другом?

0
ответ дан Charles Bretana 25 September 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: