Pull to refresh
5
0
Панченко Валентин @skyboy

User

Send message

7 вещей, которые разработчик должен знать о SQL Server

Reading time5 min
Views108K
Привет. Я бывший разработчик, ставший администратором баз данных, и ниже написал о том, что, в своё время, хотел бы услышать сам.

7. Производительность скалярных UDF оставляет желать лучшего

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

Посмотрите этот пост о принудительном использовании параллелизма – в частности, список того, что приводит к генерации «однопоточного» плана выполнения запроса. Скорее всего, использование скалярных UDF (прим. переводчика: а для серверов младше 2008 R2 и не только скалярных) приведёт к тому, что ваш запрос будет выполняться в одном потоке (*грустно вздыхает*).
Читать дальше →
Total votes 50: ↑38 and ↓12+26
Comments13

NoSQL и Big Data – обман трудящихся?

Reading time4 min
Views70K
imageНедавно нам удалось пообщаться с великим Монти — Майклом Видениусом, автором оригинальной версии открытой СУБД MySQL, который в настоящее время работает над ее ответвлением, MariaDB. (Кстати, обе эти базы поддерживаются в Jelastic.)

Как известно, мир производит и обрабатывает все больше данных (так называемый феномен «Big Data»). Общепринято мнение, что данных теперь так много, что обрабатывать их с помощью традиционных баз данных и программных методов трудно или невозможно. Это вызвало волну нереляционных баз данных (NoSQL), в которых упор делается на высокую масштабируемость. Эксперт в области баз данных, Монти, поделился с нами своими мыслями о текущем и будущем состоянии SQL, NoSQL и Big Data. Некоторые его ответы были несколько неожиданными, так что мы с радостью приводим здесь русский перевод расшифровки нашей беседы:
Читать дальше →
Total votes 93: ↑84 and ↓9+75
Comments286

Недокументированные возможности Microsoft SQL Server: STATISTICS_ONLY, DBCC AUTOPILOT и SET AUTOPILOT

Reading time4 min
Views11K
Как известно, оптимизатор запросов SQL Server, для построения оптимального плана выполнения запроса, использует оценку стоимости. SQL Server строит и оценивает множество планов и выбирает среди них план с минимальной стоимостью.

Одна из проблем, с которой мы периодически сталкиваемся, заключается в том, что для того чтобы понять как новый индекс повлияет на выполнение конкретного запроса, нам необходимо создать этот индекс. Иногда, особенно когда таблица очень велика, процесс создания индекса настолько затягивается, что превращается в настоящий кошмар. Более того, после 20 минут ожидания, мы вполне можем обнаружить, что только что созданный индекс, при выполнении запроса, вообще не используется.

Собственно, вопрос заключается в том как создать «гипотетический» индекс? Просто для того, чтобы проверить действительно ли такой индекс будет полезен при выполнении запроса.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments6

Немного о клеточных автоматах

Reading time5 min
Views55K

На хабре уже много-много-много раз писали про игру «Жизнь». Совсем недавно была удивительная статья Жизнь на плоскости Лобачевского. Но игра «Жизнь» является частным случаем т. н. клеточных автоматов. Существует много других клеточных автоматов совсем не похожих на игру «Жизнь», но тем не менее очень интересных. Про некоторые из них и хочется рассказать здесь.

Начнём с того, что рассмотрим ряд клеток, в которых, кроме одной, находятся нули:

... 0  1  0  0  0  0  0  0 ...

Рассмотри следующее правило, заменяем число в клетке на сумму этого числа и соседа слева. Получим следующую серию состояний:

... 0  1  0  0  0  0  0  0 ...
... 0  1  1  0  0  0  0  0 ...
... 0  1  2  1  0  0  0  0 ...
... 0  1  3  3  1  0  0  0 ...
... 0  1  4  6  4  1  0  0 ...
... 0  1  5 10 10  5  1  0 ...
... 0  1  6 15 20 15  6  1 ...

Не сложно увидеть, что это — треугольник Паскаля. А теперь вместо обычного сложения будем использовать сложение по модулю два. Известно (и даже недавно рассказывалось в хабрастатье Треугольник Серпинского и треугольник Паскаля), что получится дискретный аналог треугольника Серпинского:

... 0  1  0  0  0  0  0  0 ...
... 0  1  1  0  0  0  0  0 ...
... 0  1  0  1  0  0  0  0 ...
... 0  1  1  1  1  0  0  0 ...
... 0  1  0  0  0  1  0  0 ...
... 0  1  1  0  0  1  1  0 ...
... 0  1  0  1  0  1  0  1 ...

Интересно? Читаем дальше!
Читать дальше →
Total votes 82: ↑81 and ↓1+80
Comments11

Насколько плохим код должен быть?

Reading time6 min
Views73K
Эрик Липперт — ветеран Microsoft, проработавший в компании 16 лет и стоящий за разработкой VBScript, JScript и C#.

На прошлой неделе в комментариях к одной из статей разгорелся спор о роли низкоуровневой оптимизации в программировании, и я вспомнил относящуюся к этому статью Эрика. Она была написана в конце 2003, и хотя реалии с тех пор несколько изменились — принципы остались теми же самыми. Можете мысленно заменить ASP и VBScript на PHP, JavaScript, или на другой скриптовый язык по вашему вкусу.

Эту статью я уже пытался перевести в 2005, но русский текст тогда получился неуклюжий, так что этот перевод — новый и ранее не публиковался, в соответствии с требованиями НЛО. В Переводе блога Эрика Липперта этого текста тоже нет — наверное, для них он слишком стар.


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

Например, за семь лет в Microsoft я получил десятки вопросов, аналогичных по своей сути этому, заданному в конце 1990-х:
У нас есть код на VBScript, и в одной часто вызываемой функции мы определяем оператором Dim несколько переменных, которые нигде в функции не используются. Не замедляется ли каждый вызов функции из-за объявления этих переменных?
Какой интересный вопрос! В компилируемом языке, таком как Си, объявление локальных переменных общим размером n байт всего лишь вычитает n из указателя стека при входе в функцию. Если n будет чуть больше или чуть меньше, затраты времени на вычитание никак не изменятся. Наверное, в VBScript точно так же? Оказалось, что нет! Вот что я написал автору вопроса:
Читать дальше →
Total votes 171: ↑146 and ↓25+121
Comments246

Предельная производительность: C#

Reading time56 min
Views261K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →
Total votes 135: ↑90 and ↓45+45
Comments289

Ford выпустил SDK для своих автомобилей

Reading time1 min
Views61K


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

Компания Ford выпустила Arduino-совместимый микроконтроллер, который подключается к порту OBD-II (так называемый CAN-транслятор), и Java-библиотеку, которая работает практически на любом устройстве под Android.

Благодаря открытому SDK автомобили Ford превращаются в часть радиоконструктора Arduino. Можете добавлять к автомобилям кнопки, ручки, индикаторы, дополнительные дисплеи и панели управления — на что только хватит фантазии.
Читать дальше →
Total votes 118: ↑112 and ↓6+106
Comments68

Help, my database is corrupt. Now what?

Reading time12 min
Views39K
Поврежденная база данных — это, наверное, один из худших ночных кошмаров большинства администраторов баз данных. Результатом повреждения являются простои, вопли менеджеров и всякие другие неприятные штуки.
В этой статье я объясню что нельзя делать с поврежденной базой данных и опишу кое-что из того, что должно быть сделано, некоторые виды повреждений и как их можно исправить.

Как обнаружить, что база данных повреждена


Обычно повреждения превосходно обнаруживаются при попытке доступа к поврежденной странице. Запросы, бэкапы или процедуры реиндексации завершаются ошибками с высокими уровнями серьезности.
Вот пара примеров системных сообщений при обнаружении повреждения БД:
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xfdff74c9; actual: 0xfdff74cb). It occurred during a read of page (1:69965) in database ID 13 at offset 0x0000002229a000 in file 'D:\Develop\Databases\Broken1.mdf'.
Attempt to fetch logical page 1:69965 in database 13 failed. It belongs to allocation unit 72057594049069056 not to 281474980642816.
Основная проблема заключается в том, что если проверки целостности базы данных не производятся на постоянной основе, то повреждение может быть обнаружено спустя часы, дни и даже месяцы, после того, как оно образовалось, в тот момент, когда уже сложно будет что-то исправить.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments15

Обратная сторона луны

Reading time14 min
Views46K
При написании приложений, одной из важнейших вопросов являются потребление памяти и отзывчивость (скорость работы).

Считается, что сборщик мусора – черный ящик, работу которого нельзя предугадать.

А еще говорят, что GC в .NET практически не настраиваемый. А еще, что нельзя посмотреть исходники как классов .NET Framework, так и CLR, GC и т.п.

А я скажу как бы ни так!

В данной статье мы рассмотрим:
  • структура организации размещения объектов в памяти
  • CLR 4.5 Background Server GC
  • правильная настройка сборщика мусора
  • эффективный апгрейд приложений до .NET 4.0+
  • правильное ручное управление памятью

Читать дальше →
Total votes 138: ↑132 and ↓6+126
Comments28

Интерполяция: рисуем гладкие графики средствами PHP и GD

Reading time6 min
Views58K
Распространенной задачей для программиста является рисование графиков. Входными данными является массив точек (xi;yi). Как правило, мы знаем только некоторые значения — в определенных точках графика. Чтобы построить непрерывный график кривой необходимо прибегнуть к интерполяции или аппроксимации.



Интерполяция — построение кривой, проходящей через заданные точки.
Аппроксимация — приближение кривой к исходной, но не обязательно проходящей через заданные точки.

В этом топике я хочу продемонстрировать свою библиотеку для PHP, которая производит интерполяцию с помощью многочлена Лагранжа, C-сплайна и сплайна Акимы, а также аппроксимацию кривой Безье. Дополнительно в ней реализована отрисовка отрезка со сглаживанием (антиалиасингом).

Кратко рассмотрим методы интерполяция и аппроксимации.
Читать дальше →
Total votes 80: ↑77 and ↓3+74
Comments23

О производительности сетевых программ

Reading time2 min
Views15K


Заключительная лекция курса «Сетевое программирование в UNIX», который подготовили специалисты SkyDNS и компании «Айдеко», получилась многогранной.

На лекции были рассмотрены две основных темы. Марк Коренберг («Айдеко») и Александр Патраков (SkyDNS) рассказали, как простыми модификациями можно ускорить работу цикла обработки событий и объяснили, как пользоваться флагом EPOLLET.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments0

Однострочники на С++

Reading time2 min
Views60K
image
На хабе появилось несколько топиков об «однострочниках» на разных языках, которые решали простые задачи. Я решил опубликовать несколько алгоритмов на языке C/С++.
Итак, поехали!
Читать дальше →
Total votes 148: ↑111 and ↓37+74
Comments103

Инфографика — чем опасны беспроводные сети с точки зрения безопасности

Reading time1 min
Views5K
Под катом — инфографика, которая едва ли открывает что-то новое для специалистов. Её основное достоинство — наглядное изображение типичных схем работы с беспроводными сетями, которые могут грозить кражей данных и другими проблемами безопасности. Там же даны и довольно очевидные правила поведения, обеспечивающие сравнительно безопасную работу с Wi-Fi.

Хорошо подходит для распечатки и вывешивания в каком-нибудь офисе.
Посмотреть
Total votes 54: ↑35 and ↓19+16
Comments59

Мини reverse engineering и модификация Windows Phone приложений

Reading time3 min
Views5.3K
Здравствуйте!

Несколько дней назад мне попалась на глаза забавная игра, в которой необходимо на мотоцикле объезжать препятствия и за это получать очки, и мы с друзьями начали меряться количеством набранных очков немного увлеклись. Немного подумав, я решил покопаться в коде игры и добавить небольшой хак для очков. Итак, о том, как разобрать Windows Phone приложение, изменить в нем что-то и собрать это все обратно:
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments43

Установка и настройка hyper-v server для тех, кто впервые его видит

Reading time7 min
Views73K

Вступление


Сегодня я расскажу о том, как установить и настроить гипервизор hyper-v server от компании Microsoft, а так же о некоторых подводных камнях и способах их избежать.
Поводом для написания этот статьи стал материал данного поста. Этот пост подходит больше как шпаргалка, если вы уже работали с данным гипервизором. Новичку же придется столкнуться с кучей нюансов и перекопать немало форумов, в поисках ответов на нестандартные вопросы.

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

Под катом много текста и скриншотов
Читать дальше →
Total votes 42: ↑33 and ↓9+24
Comments28

Бесплатного супа больше не будет

Reading time23 min
Views17K
Фундаментальный поворот к параллелизму в программировании

Автор: Герб Саттер
Перевод: Александр Качанов

The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
(By Herb Sutter)

Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm

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

Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.

Читать дальше →
Total votes 122: ↑113 and ↓9+104
Comments81

Строим защищённую систему на основе TOR и I2P

Reading time5 min
Views77K

Введение


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

На провокации вида «при помощи такой системы можно слить гостайну врагу» я отвечаю сразу: при помощи ядерных ракет можно не только устроить конец света, но и отогнать или расколоть угрожающий нашей планете астероид.
Читать дальше →
Total votes 108: ↑100 and ↓8+92
Comments57

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views91K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Total votes 458: ↑423 and ↓35+388
Comments134

Использование радио модулей RF-2400 от Inhaos

Reading time2 min
Views53K
На хабре недавно была опубликована статья про радио модули, на мой взгляд, в ней незаслужено обделены вниманием 2.4 GHz устройства с SPI интерфейсом. Привлекают они ценой в два-три бакса за штуку, и готовым протоколом общения, включающим адресацию, CRC, отсылку подтверждения и прочие удобства.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments31

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity