Блог

Производительность временных таблиц у SQL Server

У меня на работе ETL скрипты - это просто SQL файлы, которые мы запускаем на сервере в определенном порядке. Все работало прекрасно, пока один скрипт не начал тормозить капитально. Общая скорость работы скрипта стала превышать лимит в 3 часа. 

Я запустил скрипт пошагово и он выглядел вполне нормально. Вначале создается таблица:

declare @promotions table (PromotionID int, Здесь есть еще колонки);

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

Индексы на таблицу

У меня в команде есть один супер программист, который просто создает таблицы, и думает, что они магическим образом будут работать. Только что на сервере увидел очередной его шедевр:

CREATE TABLE [dbo].[TxnData](
	[TxnDataID] [bigint] IDENTITY(1,1) primary key,
	[TxnID] [bigint] NOT NULL,
	[Name] [varchar](50) NOT NULL,
	[Value] [varchar](255) NOT NULL,
)

Обработка очередей

Продолжаю читать просто отличные статьи о высоких нагрузках в журнале Хакер и сегодня прочитал про принцип очередей для отложенной обработки данных. Все написанное в статье абсолютно верно. Я уже говорил, что сайт моего клиента очень большой и сложный, поэтому конечно же мы сталкиваемся с необходимостью отложенной обработки и сегодня я хочу показать, как можно делать очереди.  

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

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

Высокие нагрузки у Эльдорадо

Я уже кажется писал про то, что с появлением iPad начал читать журнал Хакер в PDF формате и сейчас читаю вторую статью учебника по высоким нагрузкам. Я помню недавно в одном из предыдущих номеров читал интервью с одним из авторов этого цикла статей Олегом Буниным, бывшим сотрудником Mail.ru и удивился, как он легко делится своим хлебом.  

Я так понял, что у него своя компания по консультированию крупных сайтов и они консультировали сеть вконтакте, эльдорадо и других. Судя по тому, что вконтакте способны справляться со своим трафиком, компания получила свои деньги не зря. А из того, что я прочитал в интервью и в первой статье все идеально верно.  

У нас используется не все, что описывал специалист из mail.ru, но базовые принципы используются. Мы очень много кэшируем и у нас это поставлено очень серьезно, поэтому сайт сваляется в пиковую нагрузку с приличным потоком пользователей. В пиковые часы у нас 100 тысяч пользователей выполняют операцию входа на сайт за час и рост базы составляет 10 тысяч пользователей в день. После этого они могут играть в игры, покупать товары на сайте и так далее. То есть активность на сайте приличная и со всем счастьем справляется один сервер базы данных и несколько (не буду говорить сколько серверов приложений). При этом загрузка на базе данных 20 часов в сутки не более 10% и в пиковые часы не более 40%. 

EntityFramework vs Dapper

Сегодня на работе собирались программистами и обсуждали, как будем жить дальше, что использовать. Все готовы использовать MVC 4, но что использовать для заднего плана? Мнения разделились поровну - EntityFramework и Dapper. Рад, что в компании половина программистов ценит скорость программ, умение писать SQL запросы и любят держать все под контролем. Хотелось бы больше. 

С другой стороны даже удивился, что нашлись те, кто любит бездушную машину EntityFramework. А что ты любишь использовать для доступа к базе данных - EntityFramework или что-то более низкоуровневое? Что именно? 

Магазин T-Mobile вызвал настольгию

Сейчас пишу код, в котором нужно загрузить информацию о магазинах T-Mobile в базу данных. Когда написал код создания таблицы, то не обратил внимание, но когда начал писать следующую строку, то как-то настольгия проскочила:

BULK INSERT TMobileStore

TMobileStore выглядит прямо как Delphi класс. 

Лучшая РПГ для PSP

Закончил проходить God of War - Ghost of Sparta на PSP. Отличная игра. Вообще обе игры из серии God of War отличные и я прошел полностью Ghost of Sparta и Chains of Olympus. 

Сюжет отличные, бои достаточно интересные, графика просто великолепная, если учесть, что я играл на PSP Slim, которая невероятно старая и после нее уже вышло кажется три приставки с более мощными процессорами. До этого в PSP играли в основном сын и иногда жена, а тут вот я оторвался две игры полностью прошел. 

До этого я пытался найти хорошие РПГ-шки под PSP но постоянно попадалось фуфло. Я даже стал думать, что для портативной консоли невозможно создать что-то реально хорошее. 

Какой Web язык будет популярным

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

В общем, открыл самое старое письмо, а отправитель почему-то не оставил своего адреса (отправил вопрос через сайт, где обратный адрес не обязателен). Письмом ответить значит не смогу, придется отвечать здесь. Вот собственно вопрос:

Хотел спросить ваше мнение насчет веб-программирования, какая веб-технология наиболее перспективна для зароботка в свободное время от работы на дядю, ближайшие 2-3 года? 

P.S.Сейчас пишу на плюсах, заком немного с дотнет технологией.

Какой язык программирования лучше

Читаешь новость с RSS или главной страницы? Открывай полную версию, чтобы видеть картинку. Я ее на главную вешать не стал, потому что слишком большая. 

Стрелка указывает на то, как программисты какого языка считают себя круче программистов другого языка. Интересно, что Java и Pascal программисты считают себя круче друг-друга. То же самое между программистами C++ и C#. 

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

DirectX или OpenGL

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

По возможностям DirectX превосходит OpenGL, тут Microsoft приделала очень хорошую работу, но у OpenGL тоже есть свое преимущество - межплатформенность. Написанный один раз код можно адаптировать под разные платформы. Я не говорю, что код будет работать сразу везде, но вот адаптировать вполне реально.  

OpenGL доступна как на Windows, так и на набирающем популярность MacOS, постоянно постоянно сопротивляющемся, но как никогда перспективном Linux. А если говорить о мобильных платформах, то он доступен для iOS и Android. А это невероятно большой плюс.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне