quarta-feira, 23 de setembro de 2009

Rowlock no SQL Server não funciona

Me deparei esses dias com esse problema. Até ontem achei que o with (rowlock) do SQL Server funcionava. Resolvi escrever aqui um passo-a-passo para comprovar que não funciona.

Nesse exemplo, o SQL Server precisa fazer um lock exclusivo na tabela referenciada por uma FK. Nesse exemplo, é a Tabela1. Quando o SQL Server faz um insert na Tabela2, e um delete na Tabela1, ele precisa locar toda a Tabela2, pois ela tem uma FK para a Tabela1. Como a Tabela2 está locada para inclusão, o delete fica aguardando a liberação.

Esse problema só é resolvido com a criação de índices. O rowlock parece não fazer efeito, mesmo com o índice.

Vamos entender melhor no passo-a-passo abaixo. Começamos com a criação do modelo de dados.

Tabela1

Chave1 (int) not null IDENTITY

Valor1 (varchar(10)) not null

Tabela2

Chave2 (int) IDENTITY

Valor2 (varchar(10)) not null

Chave1 (int) null, FK para Tabela1

Feito isso, vamos incluir 10 registros em cada tabela, mantendo a Chave1 em Tabela2 sempre nulo.

Exemplo de dados das tabelas:

Chave1

Valor1

1

VT1 - 1

2

VT1 - 2

3

VT1 - 3

4

VT1 - 4

5

VT1 - 5

6

VT1 - 6

7

VT1 - 7

8

VT1 - 8

9

VT1 - 9

10

VT1 - 10

Tabela 1: Exemplo da tabela 1

Chave2

Valor2

Chave1

1

VT2 - 1

NULL

2

VT2 - 2

NULL

3

VT2 - 3

NULL

4

VT2 - 4

NULL

5

VT2 - 5

NULL

6

VT2 - 6

NULL

7

VT2 - 7

NULL

8

VT2 - 8

NULL

9

VT2 - 9

NULL

10

VT2 - 10

NULL

Tabela 2: Exemplo da tabela 2

Executar os comandos em janelas distintas:

1. Janela 1

begin tran;

insert into Tabela2 with (rowlock) (valor2) values ('NT2 - 1')

2. Janela 2

begin tran;

delete from Tabela1 with (rowlock) where chave1 = 5

3. Aqui o problema já ocorre! A Janela 2 fica aguardando a execução da Janela 1.

4. Libere a Janela 1 com o comando: rollback tran;

5. Faça o mesmo na Janela 2.

O esperado seria locar apenas um registro no insert. Esse problema só pode ser resolvido se for colocado um índice na Tabela2 para a coluna Chave1.

domingo, 26 de abril de 2009

Os heróis da produtividade (em TI)

Nesses anos de trabalho já vi tentarem ou eu mesmo tentei muitas formas de aumentar a produtividade minha e das equipes nas quais trabalhei. Algumas dessas formas foram mais eficientes que outras. Na minha empresa, a Pitang, já foi feita uma pesquisa sobre os "Vilões da produtividade", o que foi bem proveitoso e serviu para abrir o tema para a discussão de todos. Dessa pesquisa, me indaguei: e os heróis?

A busca pela produtividade – ou a otimização dos serviços – é constante em mercados competitivos. As pessoas, métodos e ferramentas mais produtivas geram mais faturamento, para o mesmo custo, ou para um custo ligeiramente maior (um investimento que compensa o aumento do faturamento). Percebe-se que equacionar os agentes da produtividade com a balança financeira definitivamente não é fácil. Mas podemos simplificar a busca, de modo a facilitar essa conta.

A parte mais complicada da vida, mas a mais fácil da equação são as pessoas. Melhorar a produtividade do indivíduo significa capacitar para a execução da tarefa a ele designada. Capacitar envolve a educação formal nas universidades e o treinamento nos métodos e ferramentas que serão utilizados no trabalho. Uma pessoa que não sabe usar uma ferramenta vai levar certo tempo para aprendê-la sozinho. Aprendendo sozinho vai criar vícios que não teria se houvesse uma capacitação adequada.

A produtividade do indivíduo pode ser arruinada por problemas pessoais ou pela falta de comprometimento, para citar alguns. Esses aspectos não entram na conta, é de cada indivíduo.

A segunda parte são as ferramentas. Chamo de ferramentas aquelas que são utilizadas para auxiliar o trabalho e aquelas que compõem o software, que fazem parte da infraestrutura do software. Daquelas que auxiliam, existem as que fazem o trabalho e as que fazem o trabalho de forma mais eficiente. Só pra citar, existem umas que disponibilizam formas de refactoring e existem outras que implementam vários níveis de refactoring. No dia-a-dia, aquelas que têm os vários níveis podem melhorar a produtividade, executando um determinado refactoring de forma mais rápida. E para aquelas ferramentas que compõem o software não é muito diferente. Mas considero as que fazem o trabalho e aquelas que fazem o trabalho de forma simples. Exemplo: uma ferramenta que implementa uma tabela e uma outra que implementa uma tabela associada a uma fonte de dados. A última já lida diretamente com os dados, independentemente da forma que gera a apresentação da tabela. A primeira deixa que o desenvolvedor se preocupe em como apresentar os dados, em detalhes executados de forma mecânica.

A terceira parte são os métodos. Considero métodos tanto a forma de trabalho – o processo de desenvolvimento do software – quanto a arquitetura para o desenvolvimento. O processo de software determina quão simples será a designação de atividade e a extração das métricas do desenvolvimento. Esses são os principais fatores que podem impactar na produtividade do desenvolvedor do software. Um processo simples no qual podem ser incluídas, alteradas e removidas atividades tenderá a ser mais produtivo, pois a produção do software sempre requer a absorção de mudanças de forma rápida. A arquitetura do software pode determinar o esforço necessário para criar pontos de função. No final, o que vai importar para o cliente é:

  • Que o software atenda ao principal propósito dele. Para quem desenvolve é melhor gastar mais esforço no básico, no que é mais importante, do que se preocupar em fazer a mais. Agradar ao cliente significa fazer bem o que ele pediu.
  • Que o software seja rápido. Ninguém gosta quando um clique demora vários segundos.
  • Que o código tenha certa ordem. Todo software deve evoluir com o tempo, seja por mudanças no processo do cliente, seja por melhorias na interface com o usuário. Enfim, sempre há espaço para melhorar. Um código desordenado vai dificultar essas modificações do software.

A arquitetura do software está relacionada com a performance e a organização do código.

Desses três aspectos de produtividade do software minha impressão e no que acredito fortemente é na capacitação das pessoas. O desenvolvimento de software é um trabalho criativo, não pode ser considerado uma produção mecanizada. As pessoas determinam tanto a qualidade quanto o custo que aquele software vai ter. As ferramentas e métodos são meios complementares para alcançar a melhor produtividade, mas o básico mesmo é investir em capacitação. Se toda empresa tivesse um planejamento financeiro e de tempo para capacitação o resultado final é que todo o conglomerado de empresas alcançaria uma produtividade mundialmente competitiva, independemente se o investimento feito em determinada pessoa seja perdido pela saída dela para uma outra empresa. Acho que devemos repensar de quem é mesmo a responsabilidade de treinar os funcionários. Os heróis não são as pessoas, mas sim a capacidade de cada uma delas.

quarta-feira, 1 de abril de 2009

Fotos e vídeos do show – da varanda

O evento histórico do heavy metal em Recife aconteceu de forma muito tranquila. Mais tranquila até que muitos shows na vizinhança. Eles foram bem pontuais, inclusive. Aqui em casa teve umas cervejas, uns petiscos e metal. Foi bom ficar na varanda só olhando o movimento.

Aí vai alguma coisa que consegui pegar durante o show:


Figura 1: O auge

Como eu disse em post anterior, a imagem da máquina (celular) à noite não fica muito boa. Esse mar que vocês vêem próximo ao palco é gente. Mas, apesar da euforia, o espaço não estava totalmente lotado. Deu pra ver que lá trás tinha espaço ainda.

Alguns vídeos do show:

  1. http://www.youtube.com/watch?v=rA8yqeH5m1w
  2. http://www.youtube.com/watch?v=yOBNck7yxmM

Na hora da saída, a zoada na rua: http://www.youtube.com/watch?v=c1o9RyNb1l8

terça-feira, 31 de março de 2009

Fotos quatro horas antes do show

Uma de hoje de manhã e outra de hoje, com uma visão da fila que se forma nas proximidades.


Figura 1: hoje de manhã


Figura 2: Agora! (16h)


Figura 3: Fila na entrada

segunda-feira, 30 de março de 2009

Parece que vai ser mesmo amanhã

Parece que vai mesmo ser amanhã! Agora estou mais confiante que vou ouvir rock nesta terça!

Aí vai:


Figura 1: ontem de manhã


Figura 2: hoje de madrugada (6:15)

Tentei tirar à noite, mas a qualidade da câmera não me permitiu postar. Bem, quem quiser vir, cervejas compradas e gelando.

domingo, 29 de março de 2009

“Os 10 mandamentos do trânsito seguro”

Aproveitando a reativação do meu blog – após a desistência de ir para o Canadá – resolvi publicar o conteúdo da cartilha de mesmo nome do post. Isso porque ano passado tive que desistir de andar de moto depois de julgar, juntamente com minha família, que o trânsito está muito perigoso para esse tipo de transporte. Até eu dirigia de forma pouco prudente meu carango. Acho que acabei "pegando a doença" de dirigir estressado.

Recentemente troquei minha YS2008 por um Palio Economy, após dirigir um Gol por alguns meses. Descobri com o novo uma maneira mais segura, mais respeitosa e bem menos estressante de dirigir. A busca pela economia me fez ir mais devagar e me fez refletir no estilo de direção que eu tinha. Daí a explicação do post: reduzir a velocidade é um dos aspectos da direção segura.

Bom, em resumo: deixei de ser um barbeiro e aconselho os amigos que ainda o são para deixarem de ser!

A cartilha é de responsabilidade:

  • Da Frente Parlamentar em Defesa do Trânsito Seguro
    http://www.frentetransitoseguro.com.br;
  • Da mobilização suprapartidária do Congresso Nacional;
  • Da Conferência Nacional dos Bispos Brasileiros (CNBB);
  • Do Ministério das Cidades;
  • Do Departamento Nacional de Trânsito (DENATRAN) e
  • Da Empresa Brasileira de Correios e Telégrafos (ECT)

Mandamentos (copiados na íntegra):

  1. "Não Matar": O carro é um instrumento a serviço da vida, da convivência e do progresso. Vamos proteger a vida e respeitar as leis de trânsito.
  2. "A estrada seja para você um instrumento de comunhão entre as pessoas e não um local com risco de vida": As estradas são construídas para aproximar as pessoas e favorecer a promoção humana. Vamos defender a vida com amor e colaboração, também no trânsito.
  3. "Cortesia, sinceridade e prudência ajudarão você a superar os imprevistos": A sensibilidade nas relações humanas é o suporte para as grandes e pequenas soluções da vida. No trânsito precisamos manter este clima de respeito e amor ao outro.
  4. "Seja caridoso e ajude o próximo nas suas necessidades, especialmente as vítimas de acidentes": O amor e a justiça são princípios indispensáveis para manter e cultivar a dignidade humana. Por isso, "não nos cansemos de fazer o bem" (Gl 6, 9).
  5. "Que o carro não seja para você expressão de poder e domínio nem ocasião de pecado": O bom uso do carro depende das boas intenções do motorista. O que se passa no coração se expressa nas relações.
  6. "Convença, com caridade, os jovens e os que já não o são para que não dirijam quando não estiverem em condições de fazê-lo": O bom senso é princípio indispensável no discernimento sobre as condições de dirigir. É preciso obedecer as leis de trânsito e aceitar os próprios limites.
  7. "Ajude as famílias das vítimas de acidentes": A verdadeira solidariedade se confirma nas horas difíceis da vida. O que você gostaria que lhe fizessem procure fazer ao outro.
  8. "Reúna a vítima com o motorista agressor num momento oportuno para que possam viver a experiência libertadora do perdão": Foto não se apaga com o fogo! Violência não se resolve com violência! Só o perdão liberta e promove a paz e a justiça.
  9. "Na estrada proteja o mais vulnerável": O cuidado pela vida, sobretudo a dos mais fracos, é a maior expressão de grandeza de um coração que sabe amar.
  10. "Sinta-se responsável pelo outro": Ninguém é mais do que ninguém, mas todos somos menos sem o outro. Somos mutuamente responsáveis pela vida e pela paz nas estradas. Seja solidário!

Para quem quiser conferir a cartilha, pode baixar diretamente do site da Frente Parlamentar em Defesa do Trânsito Seguro.

Se me encontrar pelo trânsito de Recife vá com calma, pois estou sendo prudente e dirigindo de forma econômica!

Em tempo: amanhã tem o post da véspera do show do Iron Maiden.

sexta-feira, 27 de março de 2009

Iron: da varanda e situação da rua de casa hoje

Hoje mostro as imagens da varanda. As de ontem foram do escritório.

Minha expectativa com relação à rua é de que no dia vai estar um caos. Peguei as imagens dela hoje pra comparar no dia.

Amanhã tem mais. Ah! Quem tiver um binóculo pra emprestar, pode vir na terça.


Figura 1: Palco da varanda


Figura 2: A rua hoje


Figura 3: Área do show, do escritório

quinta-feira, 26 de março de 2009

Show do Iron Maiden... da varanda!


O show do Iron Maiden se aproxima e até hoje eu não acreditava que eles iam montar um palco e receber pessoas no meio do Jockey Clube de Pernambuco. Tive que tirar algumas fotos para acreditar e mostrar aos amigos que é verdade. E não vai ter lama! Eles cimentaram a área do show!

Com relação aos estacionamento, parece-me que vai ser permitido estacionar dentro do clube, mas aí vai ser no brejo, pois já vi várias vezes como a área fica depois que chove. Outro conselho: não estacionem em frente à garagem do meu prédio! A gente vai mandar rebocar, hein? Mais um: venha de táxi.

Ah! Quem quiser vir aqui em casa tomar uma antes do show, é só bater (responda a este post só pra eu saber a quantidade). No fim-de-semana providenciarei cervejas que já colocarei para gelar.

Aí em baixo está a sequencia de fotos que peguei durante a montagem da área do show.

Abração!



Figura 1: 14/03/2009



Figura 2: 25/03/2009



Figura 3: 26/03/2009