text:
The First Art Newspaper on the Net
Established in 1996
United States
Thursday, May 23, 2013
Christie's Announces Impressionist and Modern Art Sale for March 10
Charmion Von Wiegand (1899-1983), "Sanctuary of the Four Directions", signed with initials, numbered and dated 'CV.W #195 1963' (lower center). Gouache over pencil on paper laid down on board, 18¾ x 16¾ in. (47.5 x 42.6 cm.). Painted in 1963. Estimate: $40,000-60,000. Photo: Christie's Images Ltd., 2010.
sale of Impressionist and Modern Art on March 10 presents an exciting opportunity for collectors to purchase superb works by the great masters Pablo Picasso, Henri Matisse, Tamara de Lempicka, and Henry Moore and to explore a wealth of drawings, sculpture and works on paper by lesser-known artists of the Impressionist and Modern periods. Prices begin at $1,200 and range up to $80,000. With over 160 works, the sale is expected to realize in excess of $1.5 million.
Among the highlights of the sale is a selection of works by the Art Deco portrait artist Tamara de Lempicka (1898-1980), whose Portrait de Madame M sold for a record $6.1 million at Christie's Impressionist and Modern Evening Sale last spring. The upcoming sale includes two mid-career paintings from a private French collection - the meticulously composed Nature morte à la plante grasse, from circa 1952 (estimate: $40,000-60,000), and the exceptional portrait Jeune homme au livre, painted circa 1954 (estimate: $25,000-35,000). Also featured is a work from a private American collection, Un coq, une poule et ses poussins (estimate: $3,000-5,000), and two figure studies in charcoal, Un nu de femme assise sur une chaise (estimate: $2,000-3,000) and Un nu de femme de dos (estimate: $2,000-3,000).
Last fall, Christie's achieved exceptional results for a select group of works on paper consigned from the Estate of Pierre-Noël Matisse, grandson of Henri Matisse (1869-1954). The upcoming sale features additional selections from this prominent estate, including Matisses Fille avec chaine et croix, a signed pen and ink drawing (estimate: $18,000-25,000), Nu, a pencil sketch on paper (estimate: $12,000-16,000) and Branche, a floral study in black conté crayon (estimate: $8,000-12,000). A delicately shaded pencil-and-charcoal sketch, Reclining Nude, 1973, by the modern sculptor Reg Butler (1913-1981) is an additional highlight of the group (estimate: $3,000-5,000).
Picassos towering artistic influence is evident in a group of exceptional Cubist compositions by several of his contemporaries and followers, including Deux guitares (Composition cubiste), a signed oil on board by Ismael Gonzalez de la Serna (estimate: $15,000-20,000), and Le Gitan by Bela de Kristo (estimate: $6,000-8,000). Also featured is a strong selection of Surrealist works, including Samuel Baks Blue Morning (estimate: $7,000-10,000) and Rudolf Schlichters haunting Jüngling im Geflecht, 1954 (estimate: $12,000-16,000).
Though perhaps best-known as Picassos muse in the post-war period from 1946 to 1953, Francoise Gilot remains a sought-after artist of the Impressionist and Modern genre. Two paintings by Gilot, The Idol, The Child and Tulips, 1991, (estimate: $8,000-12,000) and Autoportrait avec collier blue, 1945 (estimate: $4,000-6,000) are included in the sale, as well as a unique collaboration by Gilot and Picasso entitled Owl necklace, 1948 (estimate: $10,000-15,000). This unusual necklace was among the items featured in the 2007-8 traveling exhibition Surreal Things at Londons Victoria & Albert Museum and Bilbaos Guggenheim Museum.
Additional highlights include the sales cover lot, La salle à manger à Saint-Tropez, fenêtre ouverte, no. 3 (estimate: $60,000-80,000), a vibrant interior view by Charles Camoin (1879-1965), Bouquet de roses (estimate: $20,000-30,000), a lush still life by Louis Valtat (1869-1952), and La Croisette (estimate: $45,000-65,000) and Femme au chapeau (pictured page one center; estimate: $40,000-60,000) two superb figurative works by Jean-Pierre Cassigneul.
Among the sale's sculpture highlights is an exceptional bronze by Georg Kolbe (1877-1947), one of the most successful German sculptors of the early 20th century. Bewegungsskizze (Motion Sketch), was conceived in 1925 and cast by 1939 (estimate: $20,000-30,000). Never before offered at auction, the cast has remained in the same private American collection since its acquisition in the 1930s. Also featured is Square Head by Henry Moore (estimate: $12,000-16,000), an abstract bronze consigned from the Hirshhorn Museum and Sculpture Garden to benefit its acquisition program. Cast circa 1960-61, the foot-tall bronze with golden brown patina was acquired by Joseph H. Hirshhorn in 1961, and gifted to the museum in 1966.
Pablo Picasso
Henri Matisse
Tamara de Lempicka
Henry Moore
Impressionist and Modern Art
Today's News
February 24, 2010
After London and Before Madrid, the Grand Palais in Paris Welcomes Turner and the Masters
Two Intriguing Artworks, One Believed to be a Rare Honore Daumier, Up for Auction
Exhibition Re-Asserts Henry Moore's Position at the Forefront of Sculpture
Christie's Announces Impressionist and Modern Art Sale for March 10
Important Works from George Rickey's Estate at Marlborough
Prospect 2 New Orleans Postponed One Year Due to Economic Conditions
Tutankhamun's Funeral Exhibition at the Met will Explore Materials and Rituals
National Gallery Opens Exhibition of Major Loans of Paintings by Delaroche
Museum Shows Photographs by Former President of Yugoslavia
Philbrook Museum of Art Opens Hans Hofmann: Circa 1950
Sotheby's Announces Sale of the Rosenthal Collection of Oceanic Art
Museum of London Opens New Gallery Exploring a Tumultuous Century
New Work by Dutch Artist Jacco Olivier at Marianne Boesky Gallery
Smithsonian American Art Museum to Present Exhibition That Celebrates "Running Fence"
Jonathan LeVine Gallery to Celebrate Fifth Anniversary with a Commemorative Group Exhibition
MoMA Presents Major Survey Premiering William Kentridge's Most Recent Work
Galerie Sherin Najjar Opens in Potsdamer Platz with Group Exhibition
Studio 8: A Space Dedicated to Young People at Irish Museum of Modern Art
Dr. Stephen J. Bury Appointed Chief Librarian at the Frick Art Reference Library
MoMA Presents First U.S. Installation of Yin Xiuzhen's Large-Scale Sculpture Collective Subconscius
Most Popular Last Seven Days
Jackson Pollock work "Number 19, 1948" sells for record $58.4 million at Christie's
Exhibition of nude photography around 1900 on view at Berlin's Photography Museum
Belize City officials say ancient thirty-meter high Mayan pyramid razed for road fill
Hidden drawings from Nazi concentration camp on display at Jewish Museum in Berlin
Records fall at Sotheby's contemporary art auction; Barnett Newman painting sells for $43.84M
Death mask of Napoleon to be auctioned at Bonhams' Book, Map and Manuscript sale
New Yorkers unnerved by neighbor's voyeuristic photos on view at Julie Saul Gallery
Rare Vincent Van Gogh sketchbook copies up for unprecedented sale at museum store and online
Leonardo DiCaprio environmental art auction at Christie's New York tops $38 million
Hong Kong cries fowl as giant rubber duck by Dutch artist Florentijn Hofman deflates
Related Stories
Christie's announces auction marking the first half century of the popular and luxurious interiors shop Guinevere
Christie's New York wraps 2012 with over $163 million in jewelry auction sales
Christie's sale of masterpieces formerly in the Collection of Monsieur and Madame Riahi realises $31.9 M
Christie's presents a week-long series of auctions devoted to magnificent jewels, watches, wine and design
Christie's Launches Spring 2011 Season of Post-War and Contemporary Art with First Open
Most Important Peploe Ever to Come to Auction Leads Scottish Colourist Paintings at Christie's
Extravagant Official Publishing Entreprise Leads Christie's Auction of Books and Manuscripts
Christie's Celebrates American Artistry and Craftsmanship with Exceptional Offerings
Christie's International Leads the Market for Watches in Europe, Asia, and the America's
Important 20th Century Decorative Art and Design Works Shine at Christie's New York
Digital Art
Special Photos
Special Reports
Featured Stories
Art Fairs
Art Quiz
3D Images
Last Week
Ignacio Villarreal
Editor & Publisher:
Jose Villarreal
- Consultant:
Ignacio Villarreal Jr.
Art Director: Juan José Sepúlveda Rmz.
- Marketing: Carla Gutiérrez
Web Developer: Gabriel Sifuentes
- Special Contributor: Liz Gangemi
Special Advisor:
Carlos Amador
- Contributing Editor: Carolina Farias
Royalville Communications, Inc
Founder's Site.
The most varied versions
of this beautiful prayer.
to a Mexican poet.


text:
Use our new superlist posting interface and quickly create exceptional, media-rich buzz posts.
E! News is reporting that the singer is expecting.
by Ryan Broderick
I mean, one of these guys could be your cat-mate.
by Matt Bellassai
Ousted acting IRS commissioner Steven Miller had a pretty lousy day in front of…
by Dorsey Shaw
Sign In With Facebook
Don't use Facebook?Create a New Account ›
Connected to Facebook as .
Your BuzzFeed posts and profile will be on the web at this address.
BuzzFeed is currently working with select partners to help them track what's hot on their sites using the same advanced social tracking and analytics tools used on BuzzFeed.com.
If you're interested, contact us at email@example.com.

subset: commoncrawl


text:
VIDEO: Buckingham Road Resident Creates Holiday Light Show
Every night at 7 p.m. a Buckingham Road home comes alive with the sights and sounds of Christmas.
When Bob Schmidt's wife, Jeanne, asked him to do something spectacular with their Christmas lights this year, he took to request to heart. He spent half the year buying and hanging lights, programming and matching up music to make an eight-song holiday extravaganza, which runs for just under 30 minutes every night at 7 p.m. at the couple's 85 Buckingham Road home.
Julie Fay
6:30 am on Wednesday, December 7, 2011
This is such fun -- and it's so much better in person! Pack up the kids in the car and go see it. If you're not in the Christmas spirit yet, you will be after seeing the lights!
12:31 pm on Wednesday, December 7, 2011
Cousin Bob you out did yourself, Beautiful ! Merry Christmas xoxo Chrissy
10:13 am on Wednesday, November 28, 2012
The Christmas Light Show is on again this year! Come by and watch - 7 PM, 8 PM and 9 PM.


text:
Christmas Gifts for Seniors
This time of year, we always think about making sure kids in our area have gifts come Christmas morning. And that's great! But there's another group of people that are often forgotten.
This time of year, we always think about making sure kids in our area have gifts come Christmas morning. And that's great! But there's another group of people that are often forgotten.
Friends and family of Orrington fire survivor, Christine Johnson, are hosting a fitting fundraiser in honor of her late husband. Ben Johnson III was well-known as an avid bowler, and so bowlers will gather in Bangor to pay tribute and raise money.
The Harlem Superstars will take on the RSU 19 "Dream Team" at Nokomis Regional High School this Saturday!
Thanks again to Galen Cole, WWII Veteran and Founder of the Cole Land Transportation Museum for a great Veterans' Day ceremony honoring Bangor WWII Military personnel who sacrificed their lives for freedom
A father and his three children lost their lives in an early morning fire in Orrington and the mother of the family is in the hospital, being treated for smoke inhalation. The young family had just bought the Dow Road house 6 months ago. This community is shocked and saddened over the loss.
It's rare that I ever miss the Bangor-Brewer Veterans Day Parade in November. I can't stress the importance of
Happy Acres Hall in Alton has one of the biggest and best dance floors in the area. And this Sunday, you can dance away the afternoon in support of Relay for Life! And four great bands will provide the music!
Here's a heart-warming story on a cold and stormy day. Some kids in Bangor are sending hugs to soldiers stationed overseas this holiday season. We told you about it on our newscast this week and I wanted to share with you a picture of the finished products. You'll love them!
An event being held in Bangor this weekend will offer up food and drink to celebrate nature's bounty! The Maine Harvest Festival is a great place to get a jump on Christmas shopping, or just enjoy some delicious food and products.
Update:The UHaul will be in the Target parking lot in Bangor until 9 tonight and back for a few hours tomorrow morning, taking your donations. So far the support has been great! The picture above is of banners made by Brewer Middle School children, who support what Fran is doing! Here are the details...


text:
THE SQL Server Blog Spot on the Web
A week ago I gave my session on the subject. It is only first part of the two – second will be next time when there is an open slot. Demos from my session are available here.
Recently I had to take care of the most interesting corruption case I've even seen, so decided to share this experience with you. We're talking about small accounting program which keeps its data in SQL Server Express – in this particular case in SQL Server 2005. The customer called today and sent me following error screen (nice screenshot – taken with cellular phone camera ):
Upon connecting to the server I've immediately noticed dumps with the same error. Here is entire error message:
A time-out occurred while waiting for buffer latch -- type 2, bp 04268450, page 1:804, stat 0xc00009, database id: 5, allocation unit Id: 72057594108248064, task 0x00A186B8 : 0, waittime 300, flags 0x1a, owning task 0x00A0A4D8. Not continuing to wait.
This article was extremely helpful in analyzing this dump with WinDbg tool – flow and somewhat cryptic commands described there easily pinpointed the guilty thread and its call stack:
sqlservr!LatchBase::AcquireInternal sqlservr!BUF::AcquireLatch sqlservr!BPool::Get sqlservr!PageRef::Fix sqlservr!IndexPageManager::GetPageForLinkModification sqlservr!RemoveBTreePageIfUnchangedInternal sqlservr!RemoveBTreePageIfUnchanged sqlservr!CleanVersionsOnBTreePage sqlservr!IndexDataSetSession::CleanupVersionsOnPage sqlservr!GhostExorciser::CleanupPage sqlservr!TaskGhostCleanup::ProcessTskPkt sqlservr!GhostRecordCleanupTask sqlservr!CGhostCleanupTask::ProcessTskPkt sqlservr!TaskReqPktTimer::ExecuteTask sqlservr!OnDemandTaskContext::ProcessTskPkt sqlservr!SystemTaskContext::ExecuteFunc sqlservr!SystemTaskEntryPoint sqlservr!OnDemandTaskContext::FuncEntryPoint sqlservr!SOS_Task::Param::Execute sqlservr!SOS_Scheduler::RunTask sqlservr!SOS_Scheduler::ProcessTasks sqlservr!SchedulerManager::WorkerEntryPoint sqlservr!SystemThread::RunWorker sqlservr!SystemThreadDispatcher::ProcessWorker sqlservr!SchedulerManager::ThreadEntryPoint msvcr80!_callthreadstartex msvcr80!_threadstartex
Highlighted part of the call stack indicates that Ghost Cleanup process caused this failure. Actually, I had a similar encounter with stuck ghost cleanup several years ago. The easiest way to verify that it is still stuck is to execute DBCC CHECKDB command. Indeed CHECKDB appeared to be blocked by ghost cleanup session.
What's next? You can't kill system session. Indeed you can't by you can start SQL Server without it – using trace flag 661 as startup parameter (don't forget to remove flag and restart service again if you use this flag). So, after restarting service, rebuilding index in question, removing trace flag and restarting service again, I've already thought that I've earned my beer database is fixed.
Not so fast. Now DBCC CHECKDB succeeds to complete but results are very very red. Including interesting messages like:
Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State 1: Attribute (object_id=1575689407) of row (object_id=1575689407,column_id=1) in sys.columns does not have a matching row (object_id=1575689407) in sys.objects. Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State 1: Attribute (object_id=1575689407) of row (object_id=1575689407,column_id=2) in sys.columns does not have a matching row (object_id=1575689407) in sys.objects. Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State 1: Attribute (object_id=1575689407) of row (object_id=1575689407,column_id=3) in sys.columns does not have a matching row (object_id=1575689407) in sys.objects. Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State 1: Attribute (object_id=1575689407) of row (object_id=1575689407,index_id=0) in sys.indexes does not have a matching row (object_id=1575689407) in sys.objects. Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3855, State 1: Attribute (data_space_id=1) exists without a row (object_id=1575689407,index_id=0) in sys.indexes.
Nice, uh? After first wave of shock has passed, I checked and found out that indeed object with that id doesn't exist. So it seems that all we need to do is to delete 3 rows from sys.columns and 1 row from sys.indexes. Ah, but those sys.something objects are views, aren't they? And what are the real objects? The way to find real – internal – tables and columns is via execution plans:
So actually we need to delete rows from sys.syscolpars and from sys.sysidxstats (notice that column names are also different). How do we do it? Let's try DAC (Dedicated Admin Connection)? No way – Express Edition doesn't support DAC. Unless… unless we use trace flag 7806 as startup parameter.
Restart server again, connect using DAC, try to delete rows… Oops,
Msg 259, Level 16, State 1, Line 1 Ad hoc updates to system catalogs are not allowed.
But for this we have Paul Randal's instructions. So: " sqlservr.exe -sInstanceName -m -T661 –T7806 ", then " sqlcmd -S.\InstanceName /A " and finally…
1: DELETE FROM sys.syscolpars WHERE id = 1575689407 AND number = 0
3: DELETE FROM sys.sysidxstats WHERE id = 1575689407 AND indid = 0
Now stop the server, remove all trace flags, start server in a normal way and verify that DBCC CHECKDB returns nothing. Bingo! And… well deserved my own home-brewed Scottish Ale!
Recently sp_blitz procedure on one of my OLTP servers returned alarming notification about high latency on one of the disks (more than 100ms per IO). Our chief storage guy didn't understand what I was talking about – according to his measures, average latency is only about 15ms. In order to investigate the issue, I've recorded 2 snapshots of sys.dm_io_virtual_file_stats and calculated latency per read and write separately. Results appeared to be even more alarming: while for read average latency was only 9ms, for write it skyrocketed to 260ms. Even more strange – PerfMon results for the same time interval showed similar read latency but only 17ms per write! We've almost opened support request for it – during informal phone conversations with colleagues in Microsoft nobody could explain it.
Finally we've found the answer after more thorough analysis of PerfMon file. It appears that calculation formula is different. sys.dm_io_virtual_file_stats contains total number of writes and total write latency (stall), so by dividing them we receive average latency per single write operation. PerfMon on another hand measure Disk sec/write counter every sample interval (default is 15 seconds, I used 1 second interval in order to see more detailed picture). And according to PerfMon, average latency per write during certain period is average of samples measured during this period. Disk we're talking about contains only datafiles of a single database. So we've noticed that while number of read operations per second is pretty equal along entire interval, writes behave totally different. Most of the time we see 0 (zero) writes – and 0 write latency accordingly. But once every minute we see massive writes – SQL tries to write almost 4000 IOs per second for several seconds in a row (several means sometimes 2, sometimes 10). I guess, it is checkpoint. And during these peaks latency jumps to huge values – up to 1.8 seconds (!) per write. The catch is that when we have 59 samples with 0 latency (we don't have writes, remember?) and 1 second with 120ms latency, PerfMon with calculate average and receive (59*0 + 1*120)/60 = 2ms per write latency. sys.dm_io_virtual_file_stats at the same time will report 120 ms / write. And indeed, when I calculated average write latency from PerfMon but took into account only samples with non-zero number of writes, results became very close to what sys.dm_io_virtual_file_stats showed.
So who is right in this story and should we do something with the disk? Both are right – they just calculate different numbers. sys.dm_io_virtual_file_stats calculates average latency per IO but doesn't provide any indication whether load is linear or contains peaks and idle periods. Peaks have much more influence – because peaks in latency are usually accompanied by peaks in number of IO operations, so their relative weight is higher. Perfmon on another hand, when it comes to calculate average over period (for example, PAL tool does it automatically), smoothens peaks because for it every sample – the one with zero writes and the one with 10K writes per second – has same relative weight.
Here is how our latency graph looks:
My first thought was: "Checkpoint is background process, shouldn't really affect user experience – storage guy is right, leave the disk alone". But then I decided to check read latencies – indeed, when it is so busy that write takes 1.8 seconds, there is no reason to suppose that reads fill any better. As I said in the beginning, overall average read latency was 9ms. But when separated for write-idle and checkpoint periods, results were completely different. For write-idle periods, read latency was 1.5ms. But during checkpoint it jumped to 120ms. So user experience is affected – read queries that go to disk can run very slow or even appear as stuck during checkpoints. Beware .
Recently I had to analyze huge trace – 46GB of trc files. Looping over files I loaded them into trace table using fn_trace_gettable function and filters I could use in order to filter out irrelevant data. I ended up with 6.5 million rows table, total of 7.4GB in size. It contained RowNum column which was defined as identity, primary key, clustered. One of the first things I detected was that although time difference between first and last events in the trace was 10 hours, total duration of all sql events was only 4 hours. So the next assumption to check was whether application got stuck - whether we have significant gap between two subsequent events. In the following query I'm looking for events that occurred at least 30 seconds after previous event's completion.
SQL 2005/2008/2008R2 syntax:
SELECT curEvent.RowNum, prevEvent.EndTime AS PrevEventEndTime, curEvent.StartTime AS CurEventStartTime, DATEDIFF(SECOND, prevEvent.EndTime, curEvent.StartTime) AS ApplicationStuckDuration FROM dbo.TraceData curEvent INNER JOIN dbo.TraceData prevEvent ON curEvent.RowNum - 1 = prevEvent.RowNum WHERE DATEDIFF(SECOND, prevEvent.EndTime, curEvent.StartTime) >= 30
SQL 2012 syntax:
;WITH GapsCTE AS ( SELECT RowNum, StartTime AS CurEventStartTime, LAG(EndTime, 1, NULL) OVER(ORDER BY RowNum ASC) AS PrevEventEndTime FROM dbo.TraceData ) SELECT RowNum, PrevEventEndTime, CurEventStartTime, DATEDIFF(SECOND, PrevEventEndTime, CurEventStartTime) AS ApplicationStuckDuration FROM GapsCTE WHERE DATEDIFF(SECOND, PrevEventEndTime, CurEventStartTime) >= 30
Here are results (pretty surprising at the first glance, I have to say):
In the old SQL versions we see twice reads – that's obvious from execution plan since we scan entire table twice and merge join on RowNum column. It seems that in this case Merge Join is so efficient that CPU overheard of segmentation, aggregation and spooling costs more than additional single ordered scan of the table that is already in memory anyway.
I started to write all this in order to demonstrate practical usage of the new function and how we can benefit from it compared to previous SQL Server versions. Results became a complete surprise for me.
Conclusion: always check and recheck yourself!
It happens to me at least once a week – I want to check progress of some heavy script that runs in chunks over big dataset and find out that it writes intermediate data to temporary table only. Last time it happened 3 days ago when I wanted to analyze 50GB trace table on my notebook. I wrote a script that was taking 200 thousand rows at a time, parameterizing them and aggregating by different keys – host name, application etc. Usual trace analysis stuff. After an hour I wanted to check the progress but found out that intermediate results are written to temp table and of course I forgot to add debug prints. Took me some thought and ~5 minutes of coding to find the solution. How?
My trace analysis script ran over 200K rows chunks and among other things aggregated them grouping by parameterized query text. One of the measurement columns was "TotalQueries" – counter of rows in a group that could be later used to calculate average values for Reads, Writes, Duration and CPU. Every 200k rows chunk inserted rows into #BA temp table. Last step in a script, when all chunks have already been processed, was aggregation of #BA table's data into permanent table. So in order to monitor the progress I could SUM all values of "TotalQueries" column in #BA table and compare it to number of rows in my 50GB trace table (which can be easily verified using sp_spaceused).
Of course, I new the temp table name – I wrote the initial script. So first thing was to find its object_id.
SELECT [object_id] FROM tempdb.sys.tables WHERE name LIKE '#BA%'
It brought me negative number: –1546597904 in my current demo. I don't have access to temp table created by another session. But as admin on my own notebook I sure have access to every page in every database. So next step is to find all pages that belong to #BA table. For this task we have undocumented but widely known (and used) DBCC IND command. Since digging in every page manually and wasting hour on it wasn't exactly my purpose, I kept DBCC IND output in the table variable and used it later in the script.
DECLARE @BATablePages TABLE ( PageFID INT, PagePID INT, IAMFID INT, IAMPID INT, ObjectID BIGINT, IndexID INT, PartitionNumber INT, PartitionID BIGINT, iam_chain_type VARCHAR(64), PageType TINYINT, IndexLevel TINYINT, NextPageFID INT, NextPagePID INT, PrevPageFID INT, PrevPagePID INT ) INSERT INTO @BATablePages EXEC('DBCC IND(2, -1546597904, 1)')
Actually we need only PagePID column and only for leaf level data pages e.g. PageType = 1. Next step is to loop over those pages and insert their content into another table. For viewing page's data I used another widely known (and undocumented as well) DBCC PAGE command. It is less known that DBCC PAGE can be used along with WITH TABLERESULT suffix. Note: column definitions in the following script are accidental – I just wanted them to be wide enough so that script can complete successfully.
DECLARE @rc INT, @v_PageID INT, @sql NVARCHAR(MAX) CREATE TABLE #ind( RowNum INT NOT NULL IDENTITY(1,1), PageNum INT NOT NULL ) CREATE TABLE #page(ParentObject VARCHAR(128), [Object] VARCHAR(512), Field VARCHAR(128), [Value] VARCHAR(8000) ) INSERT INTO #ind( PageNum ) SELECT PagePID FROM @BATablePages WHERE PageType = 1 SET @rc = @@ROWCOUNT WHILE @rc > 0 BEGIN SELECT @v_PageID = PageNum FROM #ind WHERE RowNum = @rc SET @sql = 'DBCC PAGE(2, 1, ' + CONVERT(VARCHAR(32), @v_PageID) + ', 3) WITH TABLERESULTS' INSERT INTO #page(ParentObject, [Object], Field, [Value]) EXEC(@sql) SET @rc = @rc - 1 END
So now we have all data pages inside single table but not in a format we're used to:
But actually, we now have everything we need. The rest is simple:
DELETE FROM #page WHERE Field <> 'TotalQueries' SELECT SUM(CONVERT(INT, [Value])) AS TotalQueries FROM #page
2 years ago I wrote about monitoring page splits with Extended Events. Only 2 bloggers explored Extended Events feature at that time, so my post was more of a learning than for any practical matter. Yet one question remained open: according to straightforward calculations, after 3 splits of the first page, next split should have occurred on another page - but trace with extended events clearly showed 4 splits of initial page.
Recently Pavel Nefyodov has drawn my attention to another curious fact: initially we had 1 page; after all those splits we had 10. But trace showed 10 splits, not 9. So where did additional split come from? And finally I've realized that there is another simple way to trace those splits - via transaction log. If we manually checkpoint the system before and perform insert in transaction afer - our transaction log will containg exactly the relevant data; and it'll remain this way all the time transaction stays open. We'll query transaction log using undocumented but widely known fn_dblog function.
OK, Let's see some code (mostly taken from my old post which in turn used page split demo from Kalen Delaney's blog). Initial configuration (including trace definition):
USE tempdb; GO CREATE TABLE split_page (id INT IDENTITY(0,2) PRIMARY KEY, id2 bigint DEFAULT 0, data1 VARCHAR(33) NULL, data2 VARCHAR(8000) NULL); GO INSERT INTO split_page DEFAULT VALUES; GO 385 CREATE EVENT SESSION MonitorPageSplits ON SERVER ADD EVENT sqlserver.page_split ( ACTION (sqlserver.database_id, sqlserver.sql_text) WHERE sqlserver.database_id = 2 ) ADD TARGET package0.asynchronous_file_target ( SET filename = N'c:\temp\MonitorPageSplits.etx', metadatafile = N'c:\temp\MonitorPageSplits.mta' ); GO CHECKPOINT GO
Short glance at our table's allocation inside data file:
DBCC IND(tempdb, split_page, -1); GO
So we have 1 IAM page and 1 data page. Now the split itself and - remember, we should query transaction log before committing transaction if we don't want accidental checkpoint to ruine all our efforts.
ALTER EVENT SESSION MonitorPageSplits ON SERVER STATE = start; GO SET IDENTITY_INSERT split_page ON; GO BEGIN TRAN INSERT INTO split_page (id, id2, data1, data2) SELECT 111, 0, REPLICATE('a', 33), REPLICATE('b', 8000); GO SET IDENTITY_INSERT split_page OFF; GO SELECT [Current LSN], Operation, Context, [Page ID], [Description] FROM fn_dblog(NULL, NULL) COMMIT GO ALTER EVENT SESSION MonitorPageSplits ON SERVER STATE = STOP; GO DROP EVENT SESSION MonitorPageSplits ON SERVER; GO SELECT split.value('(/event/data[@name=''file_id'']/value)[1]','int') AS [file_id], split.value('(/event/data[@name=''page_id'']/value)[1]','int') AS [page_id], split.value('(/event[@name=''page_split'']/@timestamp)[1]','datetime') AS [event_time], split.value('(/event/action[@name=''sql_text'']/value)[1]','varchar(max)') AS [sql_text] FROM ( SELECT CAST(event_data AS XML) AS split FROM sys.fn_xe_file_target_read_file('c:\temp\MonitorPageSplits*.etx', 'c:\temp\MonitorPageSplits*.mta', NULL, NULL) ) AS t ORDER BY [event_time]
First let's take a look at our table now:
Transaction log contains more rows than we are interested in, so I cleaned irrelevant ones out from the table below and correlated transaction log with extended events trace. I also transformed hexadecimal page numbers from transaction log to decimal ones - like we see in extended events trace.
So we can see that indeed there have been 3 splits of the first page. From transaction log we see that first action was actually allocating of page 184 which is - look at the allocation table above - index page. According to transaction log this page is allocated - not splitted from any other page. Still extended events trace shows as if it has been splitted from the first data page of our table. Don't know whether this behavior can be considered as bug - probably not. Anyway - both unanswered question from my old post are resolved: first page indeed has been splitted 3 times and we had only 9 data page splits while 10th split belongs to index page allocation.
Have a nice week!
From BOL, "Key-Range Locking" article:
Key-range locks protect a range of rows implicitly included in a record set being read by a Transact-SQL statement while using the serializable transaction isolation level. The serializable isolation level requires that any query executed during a transaction must obtain the same set of rows every time it is executed during the transaction. A key range lock protects this requirement by preventing other transactions from inserting new rows whose keys would fall in the range of keys read by the serializable transaction. (bold is mine - MZ)
I had a blocking locks problems recently. What should have been working concurrently from multiple threads actually worked single-threaded only. Here is demo - table of employees and indexed view above it that shows number of employees and total salary per department. I populated it randomly with up to 10 deparments.
USE [tempdb] GO SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON SET NUMERIC_ROUNDABORT OFF GO CREATE TABLE dbo.Employees ( EmployeeID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, DepartmentID SMALLINT NOT NULL, Salary MONEY NOT NULL ) GO CREATE VIEW dbo.V_Departments WITH SCHEMABINDING AS SELECT DepartmentID, SUM(Salary) AS DepartmentSalary, COUNT_BIG(*) AS TotalEmployees FROM dbo.Employees GROUP BY DepartmentID GO CREATE UNIQUE CLUSTERED INDEX PK_V_Departments ON dbo.V_Departments( DepartmentID ASC ) GO INSERT INTO dbo.Employees( DepartmentID, Salary ) SELECT [object_id] % 10 + 1 AS DepartmentID, [object_id] % 3000 + 1 AS Salary FROM sys.objects GO
Now I open 2 concurrent transactions and try to add new employee from both. The important thing here is that both belong to new departments: 11 and 13 (in the demo data we had departments from 1 to 10).
SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRAN INSERT INTO dbo.Employees( DepartmentID, Salary ) VALUES( 11, 2500 )
SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRAN INSERT INTO dbo.Employees( DepartmentID, Salary ) VALUES( 13, 3500 )
Second transaction is locked. Why? We don't have anything else that updates department 12, so why it is locked? Let's find out
SELECT OBJECT_NAME(i.[object_id]) AS ObjectName, i.name AS IndexName, l.request_mode AS LockRequestMode, l.resource_type AS LockResourceType, l.resource_description AS LockResourceDescription FROM sys.dm_tran_locks AS l INNER JOIN sys.dm_os_waiting_tasks AS wt ON l.lock_owner_address = wt.resource_address INNER JOIN sys.partitions p ON p.hobt_id = l.resource_associated_entity_id INNER JOIN sys.indexes AS i ON i.[object_id] = p.[object_id] AND i.index_id = p.index_id WHERE wt.session_id = 57 AND l.request_status = 'WAIT'
RangeS-U mode means shared lock for the range between values and update lock for values themselves. One value is obvious - department 11 that we've inserted in the first session. Second value, as we see in the query result, is (ffffffffffff) which indicates max int. Storage Engine knows to lock rows and other objects that are scanned by Query Processor. But we don't have row with department greater than 11. So right boundary of locked range is set to maximum possible value.
So we understand what range is locked. But why? If we work in pure read committed isolation level, we hold exclusive lock on rows we modify but nobody prevents another user from inserting or deleting another row with same department value. But we expect that our operation would update corresponding department row in the view before anybody else updates same row (e.g. if we read data after our transacion is complete, it won't be affected by other transactions). Which is classic serializable behavior. So instead of forcing customer to require serializable isolation level expicitely, SQL Server implicitely converted read-committed to serializable for this particular operation. It appears that same scenario occurs with cascading updates on foreign keys.
Almost every applicative DBA has scripts for locking and blocking issues detection. Some, like me, wrote the script themselves in order to become familiar with underlying DMVs, others downloaded one of the huge number of versions available in the net. All of these scripts are based on sys.dm_tran_locks DMV which contains information about currently active locks and on sys.dm_os_waiting_tasks that holds infomation about waiting tasks. Some of the scripts also filter out locks acquired by system sessions by adding "WHERE request_session_id > 50". My own script was among them.
WHERE request_session_id > 50
Recently I had a blocking issue. But for some reason my script didn't show blocking locks tree. Deeper investigation showed that both blocker and blocked session belonged to Service Broker. But why script failed to indicate it? Following query provides an answer - it shows spid of Service Broker activated tasks:
SELECT spid FROM sys.dm_broker_activated_tasks
As you can see, common belief that all spids under 50 belong to internal system sessions is just a myth. Actually, it was right at SQL 2000 days. Starting from SQL 2005 Serive Broker (and, I think, other features too) started to use first 50 spids.
Very nice ebook and script collection "Free SQL Server DMV Starter Pack" inspired me to write this post. It is really nice and "no nonsense" - I'll recommend it as a great starter to young DBAs that don't have their own script collection. Still script for detecting active locks contains the same old familiar mistake:
SELECT ... FROM sys.dm_tran_locks WHERE request_session_id > 50
This post is my contribution to T-SQL Tuesday #006, hosted this time by Michael Coles.
Actually this post was born last Thursday when I attended Kalen Delaney's "Deep dive into SQL Server Internals" seminar in Tel-Aviv. I asked question, Kalen didn't have answer at hand, so during a break I created demo in order to check certain behavior. Demo goes later in this post but first small teaser. I have MyTable table with 10 rows. I take 2 rows that reside on different pages. In first session transaction is opened and first row is deleted using PAGLOCK hint (without COMMIT for a meantime). In second session I select all columns from the second row(both sessions access rows by primary key which is also clustered index). Second session got locked. How come?
Here is the full story and demo script. First we create table with 10 rows, 2 of which are long.
CREATE TABLE dbo.MyTable( c1 INT NOT NULL PRIMARY KEY, c2 VARCHAR(8000), c3 VARCHAR(8000), c4 VARCHAR(8000), c5 VARCHAR(MAX) ) GO ;WITH Nums( Num ) AS ( SELECT ROW_NUMBER() OVER( ORDER BY (SELECT 1) ) AS Num FROM sys.objects ) INSERT INTO dbo.MyTable(c1, c2, c3, c4, c5) SELECT Num AS c1, CASE WHEN Num IN (2, 8) THEN REPLICATE('a', 3000) ELSE 'a' END AS c2, CASE WHEN Num IN (2, 8) THEN REPLICATE('b', 3000) ELSE 'b' END AS c3, CASE WHEN Num IN (2, 8) THEN REPLICATE('c', 4000) ELSE 'c' END AS c4, CASE WHEN Num IN (2, 8) THEN REPLICATE('d', 4000) ELSE 'd' END AS c5 FROM Nums AS n1 WHERE Num <= 10 GO
Let's examine, how out table is stored (7 is ID of my database; I don't show entire output but only relevant parts):
DBCC IND(7, MyTable, -1)
So we have 2 leaf-level data pages, 1 page for row-overflow data and 1 page for LOB data plus 3 IAM pages - one per page type. We can also verify that row-overflow and LOB pages contain 2 rows each (using DBCC PAGE we check that m_slotCnt = 2 in page's header). Now open new window in Management Studio and execute:
BEGIN TRAN DELETE FROM dbo.MyTable WITH(PAGLOCK) WHERE c1 = 2
In another session execute:
SELECT c1, c2, c3, c5 FROM dbo.MyTable WHERE c1 = 8
We see that second session is locked, so let's check locking details with sp_lock procedure:
Page in contention is 200585 which is LOB data page as we can see from the first table. Actually that's perfectly natural behavior - DELETE acquires exclusive lock, SELECT tries to acquire shared. But I'm sure it would have taken some time for me to solve the puzzle whether it was real case in my database. We're used to think of a row sitting at one page, so rowlock locks a row or a key. Probably entire page if we used PAGLOCK hint or Optimizer decided to start from a page-level lock. But we aren't accustomed to think of a row which spans over multiple pages.
And what happens if we query row-overflow page? Pretty much the same (just substitute c5 by c4 in the second query):
Another interesting issue is - what happens when we don't query LOB and row-overflow columns? We know that SQL Server doesn't know to lock particular columns but always entire row of a table or an index. So what will happen if we query only first 3 columns: c1, c2 and c3? No blocking lock this time. It means that SQL Server knows to lock particular columns and leave other columns unlocked but only if they reside on separate pages. Actually it is similar to column-oriented databases behavior.
Finally I want to check what happens when LOB column is updated - whether in-row data is also being locked. So I update LOB column in the first session and try to query same row but without LOB column.
First session:
BEGIN TRAN UPDATE dbo.MyTable SET c5 = REPLICATE('e', 4000) WHERE c1 = 2
Second session:
SELECT c1, c2, c3, c4 FROM dbo.MyTable WHERE c1 = 2
Blocking lock again. Now on a keylock:
Here I don't see any reason for exclusive lock - shared would be enough in order to prevent DML operations on the row. No danger of dirty read here since in-row data page isn't updated at all. So first step was nice - shared lock isn't acquired when we don't read row-overflow and/or LOB page. Second step in my opinion should be - for DML operations acquire only shared lock for pages/rows/keys that aren't updated.
Jonathan Kehayias and Paul Randall posted more than a year ago great articles on how to monitor historical deadlocks using Extended Events system_health default trace. Both tried to fix on the fly bug in xml output that caused failures in xml validation. Today I've found out that their version isn't bulletproof either. So here is the fixed one:
SELECT CAST(xest.target_data as XML) xml_data, * INTO #ring_buffer_data FROM sys.dm_xe_session_targets xest INNER JOIN sys.dm_xe_sessions xes on xes.[address] = xest.event_session_address WHERE xest.target_name = 'ring_buffer' AND xes.name = 'system_health' GO ;WITH CTE( event_name, event_time, deadlock_graph ) AS ( SELECT event_xml.value('(./@name)', 'varchar(1000)') as event_name, event_xml.value('(./@timestamp)', 'datetime') as event_time, event_xml.value('(./data[@name="xml_report"]/value)[1]', 'varchar(max)') as deadlock_graph FROM #ring_buffer_data CROSS APPLY xml_data.nodes('//event[@name="xml_deadlock_report"]') n (event_xml) WHERE event_xml.value('@name', 'varchar(4000)') = 'xml_deadlock_report' ) SELECT event_name, event_time, CAST( CASE WHEN CHARINDEX('<victim-list/>', deadlock_graph) > 0 THEN REPLACE ( REPLACE(deadlock_graph, '<victim-list/>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') ELSE REPLACE ( REPLACE(deadlock_graph, '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') END AS XML) AS DeadlockGraph FROM CTE ORDER BY event_time DESC GO
The difference as you can see is in the check whether '<victim-list>' node is empty (CHARINDEX('<victim-list/>', deadlock_graph) > 0). My system_health session caught some weird deadlocks. According to trace they're caused by intra-query parallelism when threads of the same session deadlock one another. Until now it is rather a rare type of deadlock but nothing strange - Bart Duncan and Craig Freedman blogged about it long ago. What is really strange is that this deadlock isn't caught by 1222 trace flag - error log remained empty. And - probably connected to previous item - victim list is empty. So instead of opening node '<victim-list>' we receive an empty one: '<victim-list/>'. I'm not sure such a deadlock deserves any attention if it occurs once in a while but I sure want to be able to parse xml_deadlock_report events without failures.
CHARINDEX('<victim-list/>', deadlock_graph) > 0
This post is my contribution to Adam Machanic's T-SQL Tuesday #004, hosted this time by Mike Walsh.
Being applicative DBA, I usually don't take part in discussions which storage to buy or how to configure it. My interaction with IO is usually via PerfMon. When somebody calls me asking why everything is suddenly so slow on database server, "disk queue length" or "average seconds per transfer" counters provide an overwhelming answer in 60-70% of such cases. Sometimes it can be fixed by adding indexes to heavy tables. Not always though. Many companies, especially young and fast growing ones, just can't properly measure IO requirements. They are usually aware of how much disk space they need. Question about IOpS is met with puzzled looks.
Recently I had to build a new system capable of 40 thousand random IOpS at the peak load. In such IO is by far the most expensive part. Although space requirements were moderate, just several Terabytes, 4-5 SATA disks of 1TB won't be enough. Far from it. Modern disks with 15000 RPM rotation speed can perform ~170 random IO requests per second. So, 40K/170 = 235 disks in several RAID0 arrays. Enough?
Not so fast. What about high availability requirements? Can we afford downtime if one of the disks is gone? No, we can't. OK, so RAID0 is out of scope. It leaves us with RAID10(striping plus mirroring) and different parity options: RAID3 through RAID6. I'll consider RAID5 as it is the most popular one. For RAID10 calculation is simple: 235 disk in RAID0 we've seen earlier x2 for mirror disks = 470 disks. That's quite a lot! So let's consider less expensive (at least sounds so) option - RAID5. Standard RAID5 array contains 5 disks. Unlike RAID3 and RAID4 it has no dedicated disk for parity (instead parity is written in a round robbin on all disks), so we can assume that nothing is wasted. We're still running with the same number - 235 disks, just a little less overall space due to parity. But space isn't our concern here. So, can we finally issue order to the storage vendor?
Unfortunately we're still not there. Good time to ask about usage pattern - what do those 40K IOpS contain? ~40% are SELECT operations (e.g. 16K operations per second), 20% are INSERT (8K per second) and 40% are UPDATE (16K per second). We also know, that rows that undergo UPDATE are those that are SELECTed before. And we know that all operations use clustered index seek. Let's perform simple calculation. We can safely assume that upper levels of clustered index are in cache, so we have 1 physical read per SELECT. UPDATE performs read + write but we know that row has been read earlier, so we can assume that read is also from cache. So, price of UPDATE is 1 IO. Great! 1 IO per operation regardless of its type - we're still with 235 disks. At this point some of you would say: "Stop wasting our time, let's buy that damn storage!"
OK, after week or two we install storage, configure 235 disks in arrays of 5 plus a little more for hot spare, Windows, SQL Server transaction log etc. Now we open PerfMon and start load test expecting to see 40K IOpS at maximum load. And we would be greatly disappointed. Actually, having CV updated is a good thing at this point - some organizations that I know won't employ DBA that wastes them around 100K bucks. So, where is the catch?
The catch is an UPDATE. Contrary to the wide belief, PerfMon doesn't show physical IO. Yes, we know that drives D and E reside on the same "physical disk". But is it really physical? No, it is just another layer that can conceal beneath anything from directly attached disk to RAID50 array. PerfMon shows IO "on host". So we probably see 1 IO for UPDATE. But storage actually does something else - and it is really physical layer now. First, it reads both data and parity bytes. Data byte is in cache, so we have 1 read instead of 2; but remember, we haven't updated anything yet (you probably ask about parity byte - why it isn't in cache? because for SELECT operations only data bytes are read). Next, it writes both data and parity. So, we have 3 IO operations per single UPDATE. Going back to overall numbers, 16K updates are actually 48K IO operations when working on RAID5. This trap is known as "RAID5 write penalty". That's not the only RAID5 issue. We also have ~2/3 performance degradation on single disks failure - because in order to reconstruct corrupted bit we have to read all 4 bits on other disks including parity -> 4 times more IO. Considering all this, we should carefully evaluate whether RAID5 is really more cost effective than RAID10. The answer is positive for read-intensive environments where we do not have write penalty. For write-intensive environments TCO of RAID10 can be better, especially taking into account possible corruptions.
Last but not least. I know that some statements here are oversimplified. I didn't take into account page splits or influence of storage system cache; I didn't consider SSD-based or mixed storage. Although I used real system I've built as example, here it is more of a mathematical model. Real world is always more complicated. But I don't want my fellow DBAs to fall asleep reading this post :-).
For want of a nail the shoe was lost. For want of a shoe the horse was lost. For want of a horse the rider was lost. For want of a rider the battle was lost. For want of a battle the kingdom was lost. And all for the want of a horseshoe nail.
I'm now in the middle of severity A case that is best depicted by this rhyme. While Microsoft engineers look for a root cause, I'll describe here how small bug can "kill" strong server. The story begins when for some unknown reason "rows" column in sys.partitions DMV begins to show 4.6 billion rows for clustered index of one of the entities tables in my datawarehouse database. COUNT(*) on the table returns 1 million rows.
Second step - daily job that executes sp_updatestats stored procedure. This procedure updates statistics in the database using sample data . Let's say, I randomly took 5% of table's data and calculated number of unique values for Column1 - n values. So total unique values of Column1 in my table is 20*n. But how do I know, how many rows per unique value of Column1 are there in the table? Very simple: SQL Server just takes rows column from sys.partitions and divides by our 20*n number.
Third step - query: it joins between our Table and another one WHERE Column1 = x. Optimizer compiles the query and builds execution plan based on existing statistics (e.g. 4 billion rows in the table). Expected number of rows from our table is millions - so Optimizer chooses HASH JOIN as the best way to perform JOIN operation.
Now that Optimizer made a decision about execution plan, it asks for a memory quota for query execution. Based on the estimation about millions of rows. Remember that memory quota for query execution isn't taken from data buffer cache, so on 32 bit systems we can't utilize too much memory. For example, I executed single query as described earlier and while it was running checked memory usage of my session.
So we have 252Mb granted while less than 1Mb used. Total available memory is 1.6Gb, so you can calculate yourself how many concurrent queries system supports at its current state. It is exactly the situation we had: 5 sessions were running and 65 were waiting for memory grant (if you monitor wait types - there will be a lot of RESOURCE_SEMAPHORE).
P.S. DBCC UPDATEUSAGE fixes the initial problem. So while Microsoft engineers look for the reason why sys.partitions went wild, I monitor it in order to fix the problem before it "kills" the server.
Recently my fellow friend and colleague Yoni Nakache drew my attention to the nice custom report which can save valuable time to any DBA - it returns number of rows per partition along with partition boundaries and filegroup data. The rdl can be found here at Codeplex. What was definitely missing is space usage information - reserved / used space per partition. So I filled the gap - new rdl is here.
This ORM piece of tool just can't stop to surprise. A week ago I've found out that although NHibernate can execute stored procedure, it doesn't support output parameters - when procedure returns one, it causes failure. Today I've found another pearl. Imagine following scenario: 2 entities with many-to-many relationship between them. For example, projects and employees - project contains many employees, employee can participate in several projects. So we have ProjectsEmployees table that maps employees to projects. Done with a foreword, now the scenario itself. Project X contains 9 employees already mapped to it in the ProjectsEmployees table. We want to add another employee to the project. Just a simple INSERT operation, right? NHibernate doesn't look for easy ways. It performs the following operations:
1. DELETE FROM ProjectsEmployees WHERE ProjectID = X
2-11. INSERT INTO ProjectsEmployees VALUES()...
Instead of single INSERT we have 11 operations here. Besides unnecessary pressure on IO system and possible locks, we have much more serious consistency issue - if HR department queries table after DELETE operation but before all the INSERTs have been completed, it would receive project status that never occurred in real life - 3 employees for example. But that's the way NHibernate works - "just in case" overwrites the entire projects object.
Ah, and how did I find out? Noticed that after mapping new employee to project trigger on delete fires. WEB team developers (those actually programming with NHibernate) keep log of commands NHibernate executes in development environment. There I have seen it plain and simple.
After reading Kalen Delaney's post about single insert causing 10 page splits, I wanted to see those splits in detail - their order at first place. And in SQL Server 2008 there is a way to trace splits - using new Extended Events infrastructure. Here is simple script that creates the trace and afterwards displays results.
First of all, create and populate table in tempdb as described in the Kalen's post.
USE tempdb; GO CREATE TABLE split_page (id INT IDENTITY(0,2) PRIMARY KEY, id2 bigint DEFAULT 0, data1 VARCHAR(33) NULL, data2 VARCHAR(8000) NULL); GO INSERT INTO split_page DEFAULT VALUES; GO 385
Now, let's create and start Extended Events session. The only event we would like to monitor is page_split. On the way we'll capture sql text in order to be sure that it is our insert that caused split.
CREATE EVENT SESSION MonitorPageSplits ON SERVER ADD EVENT sqlserver.page_split ( ACTION (sqlserver.database_id, sqlserver.sql_text) WHERE sqlserver.database_id = 2 ) ADD TARGET package0.asynchronous_file_target ( SET filename = N'c:\temp\MonitorPageSplits.etx', metadatafile = N'c:\temp\MonitorPageSplits.mta' ); GO ALTER EVENT SESSION MonitorPageSplits ON SERVER STATE = start; GO
Now execute INSERT command from Kalen's script.
SET IDENTITY_INSERT split_page ON; GO INSERT INTO split_page (id, id2, data1, data2) SELECT 111, 0, REPLICATE('a', 33), REPLICATE('b', 8000); GO SET IDENTITY_INSERT split_page OFF; GO
Afterwards we'll close the session and display results.
ALTER EVENT SESSION MonitorPageSplits ON SERVER STATE = STOP; GO DROP EVENT SESSION MonitorPageSplits ON SERVER; GO SELECT split.value('(/event/data[@name=''file_id'']/value)[1]','int') AS [file_id], split.value('(/event/data[@name=''page_id'']/value)[1]','int') AS [page_id], split.value('(/event[@name=''page_split'']/@timestamp)[1]','datetime') AS [event_time], split.value('(/event/action[@name=''sql_text'']/value)[1]','varchar(max)') AS [sql_text] FROM ( SELECT CAST(event_data AS XML) AS split FROM sys.fn_xe_file_target_read_file('c:\temp\MonitorPageSplits*.etx', 'c:\temp\MonitorPageSplits*.mta', NULL, NULL) ) AS t ORDER BY [event_time] GO
OK, the result is:
So, we see 10 splits, among them 4 splits of page 148, another 3 of page 178 etc. It makes sense. When split occurs, ~half of the data from the old page goes to the new one. So if the new row - the one that caused split - should originally have entered first half of the page, after the split it would still try to enter the old page - not the new one. In our case originally we had 56 rows before the new one (id from 0 to 110 step 2) and 385 - 56 = 329 rows after. I would still expect 3 and not 4 splits of the initial page because (((385 / 2) / 2) / 2) = ~48 < 57 (new row's place). So I have expected that after the third split new row would at last leave the initial page. But I was wrong - don't know whether that's just not strict math or there're other factors I didn't think of.


text:
Eatontown Real Estate Market
The median sale price for homes in Eatontown over the last 12 months is $260,750.
The median mortgage debt is $189,001.
Eatontown, NJ Price Trends - Sold vs. Listed
The median list price in May for single family homes in Eatontown is $290,000.
The price per square foot for listings in this area is $159.
The median sale price in January for single family homes is $360,000.
Eatontown, NJ Property Ownership
The percent of owner occupied properties in Eatontown is 15.74% below the national average.
The percent of rental properties in Eatontown is 25.68% above the national average which is typical for urban areas.
Neighborhood and valuation information provided by Onboard Informatics ©2012 Onboard informatics. Information deemed reliable but not guaranteed.


text:
America the brutal
In his follow-up to "Angela's Ashes" Frank McCourt confronts the indignities of immigrant life.
By Andrew O and #039;HehirTopics: Books, Entertainment News
Say what you will about America and about the publishing industry, the fact is that surpassingly strange things, miracles almost, still happen in both. Would anyone have believed, say, five years ago, that one of the decade's biggest books would be a memoir of a desperately poor Depression childhood, written by an unknown retired schoolteacher? Like any book or movie or cultural phenomenon that captures the public imagination unexpectedly, Frank McCourt's "Angela's Ashes" was a beneficiary of its time and place. The hysteria for all things Irish (or, still more dubiously, "Celtic") was at its height in 1996. Fifty-year anniversaries of D-Day, the fall of Berlin and the Hiroshima bombing had focused the nation's attention one last time on the Depression generation, which, as Bob Dole's presidential campaign demonstrated in tragicomic fashion, was finally relinquishing its hold on American society.
"Angela's Ashes" is a fable testifying to the redemptive powers of two things turn-of-the-century Americans desperately want to believe in: storytelling and America itself. We read about a half-starved boy with infected eyes and rotten teeth, scrounging the docks of Limerick on Christmas Day for loose lumps of coal so his mother could finish cooking a half-boiled pig's head, and we know he grew into a man who could write about such things with humor, tolerance and even love. You can argue — and some critics did — that "Angela's Ashes" was shamelessly sentimental, and that it played to Irish-Americans' hazy, half-imaginary notions of their tragic origins. In the finest Irish tradition of "begrudgers," former neighbors of the McCourts in Limerick assured visitors that all had not been as the ungrateful Frankie depicted it, and that other families had had it worse. But the secret of "Angela's Ashes" is simple and has little to do with the Irish mythology of suffering: Nothing in Frank McCourt's miserable childhood could quench his compassionate spirit or his love of life.
For me — and, I imagine, for thousands of other children of immigrants — it was impossible to read "Angela's Ashes" with dispassion. My own father was growing up poor in Dublin during the same years McCourt was growing up poor in Limerick, and I identify the two so strongly that I suspect my critical judgment of McCourt's work is compromised even as my feeling for it is enriched. We all look for things that speak to us personally in whatever we read, but in this case the histories are uncannily similar. Both were born to immigrant families in New York (just three years apart) and then sent "home" to Ireland as young children after their families' fortunes turned sour in the Depression. Later, both returned to America as teenagers, worked their way through college, and went on to teaching and writing careers (McCourt in the New York City schools, my father at the University of California).
I don't think my great-grandmother's household was nearly as desperate as the McCourts', but it wasn't a picnic either. Around the time young Frankie was out hunting for coal on the docks, my father was gathering mussels along the rocky seafront of Clontarf, on Dublin's north side, so his grandmother could cook them in buttermilk for the family's dinner. (Anytime we ate in a restaurant that served mussels, my dad would tell this story again, by way of explaining that he'd never pay for the damn things in his life.) In both families, the stories vary, "Rashomon" style, depending on who is doing the telling. My father remembered his Irish childhood as years of cold, hunger, loneliness and want. His aunts and cousins remember a loving, almost genteel household, straitened by circumstance, in which my father was the pampered prodigy.
Like my father, Frank McCourt grew up dreaming of that gold-paved, sunlit paradise across the ocean where he had been born, and to which he would one day return. "'Tis" is literally the last word of "Angela's Ashes," following and affirming the sentence "'Tis a great country" — referring, of course, to the United States. This moment of boundless, naive optimism provides both a title and a starting point for the second volume of McCourt's memoir. This book takes its narrator — his charm, human sympathy and yarn-spinning ability intact — from his return to New York in 1949 up to the death of his mother, Angela, in the mid-1980s (when Angela's actual ashes finally play a role in her son's story). And while 'tis indeed a strange and in many ways wonderful country this young man encounters, he finds in it almost as much misery as he left behind.
"'Tis" is virtually guaranteed to be a bestseller, but it faces an impossible obstacle in trying to please readers of "Angela's Ashes." It's almost certain to be seen as something of a disappointment.
If childhood presents a clear narrative — the goal of every child is to survive and escape — adult life offers no coherent story line, or perhaps too many. "'Tis" thrums with vivid details drawn from McCourt's life as a laborer, soldier, student, husband and teacher. You can count on him to side with the downtrodden, lampoon the powerful, resist the Irish tendency toward racism and closed-mindedness, capture dialogue magnificently and recount comic anecdotes at his own expense. But we're rarely sure why we meet the many characters he encounters as he careens through colorful, mid-century New York, or where exactly he is going.
Most of "'Tis" takes place during the '50s, as McCourt begins the painful immigrant's journey of loss and reinvention. Lonely and uncertain, he works at menial jobs and lives in rooming houses until he is drafted and sent to Germany, and as a result he can visit Limerick in his U.S. Army uniform as that most exotic of creatures, a "returned Yank." An autodidact who has read Dostoyevsky and Melville despite never graduating from high school, McCourt then literally talks his way into New York University's School of Education, choosing his career virtually by chance. He falls in love with a willowy WASP goddess and eventually marries her, although it doesn't work out. (My father did that too — that's why I'm here.) Then "'Tis" fast-forwards across three decades at breakneck speed, to focus on Angela's last years, when she moves to New York to be near her sons. (It's puzzling that McCourt's several brothers, including the actor and tavern owner Malachy, himself now the author of a memoir, are never more than shadowy, half-formed presences in "'Tis.")
If anything, the doleful, almost aimless quality of "'Tis" seems like a counterbalance to the fable of transcendence told in "Angela's Ashes." The boy in McCourt's first book dreams of leaving Limerick and poverty behind, but the man in his new book discovers that leaving your homeland is not the same as escaping your provenance. "Fifth Avenue tells me how ignorant I am," the adult McCourt reflects during a late-night meander, after his WASP girlfriend has temporarily dumped him. "There are the window mannequins in their Easter garb and if one of them came to life and asked me what kind of fabric she was wearing I wouldn't have a notion. If they wore canvas I'd spot it straight away because of the coal bags I delivered in Limerick and used for cover when they were empty and the weather was desperate … I could never point to a dress and say that's satin or wool and I'd be lost entirely if challenged to identify damask or crinoline."
Perhaps the principal theme of "'Tis" — although it's never acknowledged — is that adulthood, and especially manhood, isn't all it's cracked up to be. This is a book full of lonely, anguished men, from Digger Moon, a Native American carpetlayer in Manhattan's Biltmore Hotel who is sometimes "so overcome by the sufferings of his people" he refuses to work; to Peter McNamee, a fellow immigrant and meatpacker who bounces from one Bronx rooming house to another and dreams of moving to Vermont to become "some kind of American Protestant"; to Corporal Dunphy, an Army lifer and sentimental drunk who weeps for the family he abandoned back in Indiana. McCourt can't help comparing this catalogue of lonesome losers to his own father, who went off to work in England in the 1930s — along with many other Irish men — but spent everything he earned in the pubs of Coventry, ignoring his near-starving family.
But the most haunted figure in this landscape is certainly Frank McCourt himself. At his first American job, cleaning out ashtrays in the posh Palm Court at the Biltmore, he is embarrassed by his bad eyes and teeth and intimidated by the crew-cut boys and blonde girls who "meet and sit and drink and laugh, nothing on their minds but college and romance, sailing around in the summer, skiing in the winter, and marrying each other so that they'll have children who will come to the Biltmore and do the same." My father had some of those jobs, too. When he was a pin-setter in the Chase Manhattan Bank's executive bowling alley, the young Yale-grad bankers liked to roll their balls down the lane while he was at work, just to make him dance.
More than 20 years later, confronting his radical-chic, tie-dyed students at Manhattan's exclusive Stuyvesant High School, McCourt still feels the humiliation and bitterness of the new immigrant: "I'm standing here … looking at you, the privileged, the chosen, the pampered, with nothing to do but go to school, hang out, do a little studying, go to college, get into a money-making racket, grow into your fat forties, still whining, still complaining, when there are millions around the world who'd offer fingers and toes to be in your seats, nicely clothed, well fed, with the world by the balls." My father too would come home from teaching freshman English in a blind fury, enraged by the Berkeley brats who wanted to know how Milton's "Lycidas" was relevant to Vietnam, and who didn't understand that a smithy was a building rather than a man.
I believe McCourt intends "'Tis" to be the story of a man who has come through, who learns enough from his painful life experiences to become a reader, a thinker, a teacher and finally a writer. Well, I'm sure my father wanted me to see his life in much the same way, but as sons always will, I judged him harshly and saw his weaknesses as paramount. There are crucial differences between them. For one thing, McCourt is a far more graceful and natural writer than my father ever was (my dad tried to compensate for his awkwardness and insecurity by knowing everything about every subject), and telling his story must go at least part of the way toward relieving its pain. But I can't help myself — the Frank McCourt I believe in is the one who seems most familiar to me, most real. McCourt writes that he always cries when he sees the green checkerboard of the Irish countryside through an airplane window, hearing in his mind his mother's jibe: "Your bladder must be near your eye." My father cried at that sight too, despite his claims that he loathed his childhood, and I think that, like McCourt, he never felt quite at home in either Ireland or America.
Beneath the genial, deceptively casual prose of "'Tis," McCourt paints an unflattering portrait of himself as a drinker and a drinker's son, a chronic depressive, a bad husband, a loving but highly flawed father. I know this picture and I believe it. My father's father fell in front of a subway train in 1931, probably boozed to the gills, possibly a suicide. So the Frank McCourt I believe in is the man who gets so loaded on his own wedding day that he gets in a ferocious barroom brawl and provokes his wife to throw her wedding ring out the window. The man plagued by dark moods, indigestion and petty jealousies. The teenage boy who, after finally reaching the city of his dreams, is afraid to go outside and lies on a rooming-house bed in the dark playing childhood memories over and over again and thinking, "It's magic to go back to Limerick in my mind even when it brings the tears."
Related Stories
More Related Stories
- "Girls Gone Wild" creator Joe Francis to jury: "You should be euthanized"
- Ai Weiwei releases heavy metal music video
- Actually, Beyoncé is a feminist
- Marc Maron and Michael Ian Black's epic Twitter battle
- Cannes: Directing 101 with James Franco
- Welcome to the jungle: The definitive oral history of '80s metal
- Burt Bacharach opens up on daughter's suicide
- Steven Spielberg to produce "Halo" television series
- Amazon set to launch fine-art gallery
- Twitter torches Dan Brown's "Inferno"
- Brad Pitt keeps breaking his silence on how boring marriage to Jennifer Aniston was
- Lars von Trier's "Nymphomaniac" to use porn star body doubles
- New Beyoncé single leaked
- The sweet, sure to be short-lived "The Goodwin Games"
- Damon Lindelof admits barely-clothed scene in "Star Trek" was "gratuitous"
- Justin Timberlake: I'm a mediocre folk singer!
- Ray Manzarek, founding member of The Doors, dies at 74
- Beware of book blurbs
- Did a Salon excerpt ruin Penn Jillette's chance to win "Celebrity Apprentice"?
- Zach Galifianakis to take formerly homeless woman to "Hangover 3" premiere
- Seth MacFarlane will not host Oscars again
Featured Slide Shows
The week in 10 pics
close X- Share on Twitter
- Share on Facebook
- Thumbnails
- Fullscreen
- 1 of 11
- Previous
- Next
Lisa Montgomery embraces her nephew Thursday after a tornado tore apart her home in Cleburne, Texas. The twister killed six people and destroyed entire swaths of the North Texas town.
Credit: AP/LM Otero -
Jack McMahon, the defense attorney for abortion doctor Kermit Gosnell, speaks outside the Criminal Justice Center in Philadelphia Tuesday. His client was convicted of killing three babies in his clinic, and will serve multiple life sentences.
Credit: AP/Matt Rourke -
A photo taken Monday captures Vice President Joe Biden's response to a Milwaukee second-grader's innovative proposal to end America's epidemic of gun violence. This guy!
Credit: AP/Jenny Aicher -
Sen. Rand Paul, R-Ky., flanked by a grouper-eyed Michele Bachmann, addresses the IRS' admission that it targeted Tea Party groups in advance of the 2012 election. In an op-ed for CNN Thursday, the Kentucky senator slammed the president for his faux outrage.
Credit: AP/Molly Riley -
Ousted IRS chief Steven Miller is sworn in on Capitol Hill Friday. Miller testified before the House Ways and Means Committee on the extra scrutiny the agency gave conservative groups applying for tax-exempt status.
Credit: AP/J. Scott Applewhite -
Attorney General Eric Holder pauses as he testifies on Capitol Hill before the House Judiciary Committee Wednesday. Holder is under fire, among other things, for the Justice Department's gathering of phone records at the Associated Press.
Credit: AP/Carolyn Kaster -
O.J. Simpson sits during an evidentiary hearing at Clark County District Court in Las Vegas, Nev., Thursday. Simpson, who is currently serving a nine-to-33-year sentence in state prison for armed robbery and kidnapping, is using a writ of habeas corpus to seek a new trial.
Credit: AP/Las Vegas Review-Journal/Jeff Scheid -
Major Tom to ground control: On Sunday astronaut Chris Hadfield recorded the first music video from space, a cover of David Bowie's "Space Oddity."
Credit: AP/NASA/Chris Hadfield -
When it rains it pours. President Barack Obama speaks during a news conference Thursday with Turkish Prime Minister Recep Tayyip Erdogan, inexplicably inspiring an #umbrellagate Twitter meme.
Credit: AP/Jacquelyn Martin -
A smoke plume rises high above a road block at the intersection of County A and Ross Road east of Solon Springs, Wis., Tuesday. No injuries were reported, but the the wildfire caused evacuations across northwestern Wisconsin.
Credit: AP/The Duluth News-Tribune/Clint Austin -
Recent Slide Shows
- Share on Twitter
- Share on Facebook
- Thumbnails
- Fullscreen
- 1 of 11
- Previous
- Next
Related Videos
Most Read
- Oklahoma senator: Tornado aid "totally different" from Sandy aid Jillian Rayfield
- Horrifying new trend: Posting rapes to Facebook Mary Elizabeth Williams
- Facebook's hate speech problem Mary Elizabeth Williams
- Revenge, ego and the corruption of Wikipedia Andrew Leonard
- Brad Pitt keeps breaking his silence on how boring marriage to Jennifer Aniston was Daniel D'Addario
- Inhofe and Coburn: Red state hypocrites Joan Walsh
- GOP attorney general candidate tried to force women to report miscarriages to police Katie Mcdonough
- Beltway scandal machine breaks, knows nothing about America Joan Walsh
- Zach Galifianakis to take formerly homeless woman to "Hangover 3" premiere Prachi Gupta
- Jaron Lanier: The Internet destroyed the middle class Scott Timberg
Popular on Reddit
links from salon.com
41 points42 points43 points | 6 comments
42 points43 points44 points | 11 comments
31 points32 points33 points | 4 comments


text:
Home » News » Politics » Presidential Campaign
In Israel, Romney talks tough against Iran
"We must lead the effort to prevent Iran from building and possessing nuclear weapons capability," Romney said. "We should employ any and all measures to dissuade the Iranian regime from its nuclear course. And it is our fervent hope that diplomatic and economic measures will do so. In the final analysis, of course, no option should be excluded. We recognize Israel's right to defend itself and that it is right for America to stand with you."
He said the tough talk from a possible U.S. president is critical to let Iran's leaders know that they face unified and unrelenting opposition to their plans.
"Make no mistake, the ayatollahs in Iran are testing our moral defenses," he said. "They want to know who will object and who will look the other way. We will not look away nor will our country ever look away from our passion and commitment to Israel."
Romney did not specify any significant policy difference from Obama, who also refuses to rule out military action as a last resort.
But he drew an unspoken distinction with Obama, who has complained about open talk of warfare to stop Iran. Obama in March said there was "too much loose talk of war."
"It is sometimes said that those who are the most committed to stopping the Iranian regime from securing nuclear weapons are reckless and provocative and inviting war," Romney said. "The opposite is true. We are the true peacemakers."
In a distraction from his message of the day, Romney had to back away from a statement from a top adviser promising support for unilateral Israeli military action against Iran.
"If Israel has to take action on its own, in order to stop Iran from developing that capability, the governor would respect that decision," said Romney's senior foreign policy advisor Dan Senor.
Several hours later, the Romney campaign issued a clarification.
"Gov. Romney believes we should employ any and all measures to dissuade the Iranian regime from its nuclear course, and it is his fervent hope that diplomatic and economic measures will do so," Senor said an email. "In the final analysis, of course, no option should be excluded. Gov. Romney recognizes Israel's right to defend itself, and that it is right for America to stand with it."
In a move that surprised Israeli officials, Romney in his speech called Jerusalem the capital of Israel, telling the audience, "It is deeply moving to be in Jerusalem — the capital of Israel."
The United States does not recognize Jerusalem as the capital, and the US embassy has remained in Tel Aviv despite repeated requests by Israel to move it to Jerusalem. The White House this week dodged questions about Israel's capital, mindful that the status is a major point of peace negotiations. Palestinian leaders maintain that East Jerusalem will be the capital of their future state and that the city is currently a "divided capital."
- Should adultery remain a crime under U.S. military law?
- Yes
- 42%
- No
- 58%
- Total Votes: 641
John DiStaso's Granite Status
26 John DiStaso's Granite Status: Aide: 'Harry Reid doesn't speak for' Kelly Ayotte
0 John DiStaso's Granite Status: NH Dems 'welcome' back Scott Brown with 'Desperado' web ad
0 John DiStaso's Granite Status: Equipment manufacturers hire prominent NH attorney to fight dealers 'bill of rights'
7 John DiStaso's Granite Status: Just who is looking to build a New Hampshire casino?
0 John DiStaso's Granite Status: Gabrielle Giffords' gun control advocacy group critical of Ayotte in new radio ad
2 Granite Status: Guinta visits Washington as he weighs 2014 options
3 John DiStaso's Granite Status: Gatsas makes it official: seeking 3rd term as Manchester mayor
0 John DiStaso's Granite Status: Despite Sununu objection, Teamster official confirmed to state racing, charitable gaming panel
5 John DiStaso's Granite Status: Ovide Lamontagne headed to D.C. as Americans United for Life general counsel
3 John DiStaso's Granite Status: Gov Bobby Jindal coming to NH; 'Shaheen machine' raised $1.23M in Q1
0 John DiStaso's Granite Status: 'Casino Free NH': Pro-Hassan, but anti-gambling
5 John DiStaso's Granite Status: Jeb Bradley unfazed by possible Scott Brown US Senate run
0 John DiStaso's Granite Status: UNH Law's Rudman Center to host national conference on 'fiscal responsibility'
0 John DiStaso's Granite Status: NHDP to beef up communications team for 2014
0 John DiStaso's Granite Status: State GOP operatives split on how Priebus plan will affect NH, lesser-funded candidates
0 John DiStaso's Granite Status: Chris Sununu confirms he's eyeing governor or U.S. House run in '14
0 John DiStaso's Granite Status: Guinta re-emerges as founder, chair of new independent business advocacy group
0 John DiStaso's Granite Status: NH RNC member not alarmed by early moves to jumble 2016 presidential primary, caucus calendar
5 John DiStaso's Granite Status: New conservative advocacy group sends direct mail in Manchester Ward 2 special House election
0 John DiStaso's Granite Status: Ayotte among GOP senators invited to dine with Obama Wednesday evening
- 65 mph OK for E-ZPass drivers with opening of new lanes at Hooksett toll plaza - 0
- Updated: NH Senate kills House-passed gas, tobacco tax hikes - 1
- Senate Finance Committee rejects Medicaid expansion - 10
- Man wielding pipe robs Cumberland Farms in Goffstown - 0
- Buchholz moves to 7-0 as Red Sox post win - 0
- Gambling bill scuttled, 'Now it is going to be really tough' for budget - 29
- NHIAA Roundup: BG girls' tennis team sweeps Pinkerton - 0
- NHIAA box scores, summaries for May 22 - 0
- Officials say Goffstown High 'safe' after threat of violence - 1
White powder in Salem shipping container posed no serious risks
READER COMMENTS: 0Presidential Campaign � Events
- Should adultery remain a crime under U.S. military law?
- Yes
- 42%
- No
- 58%
- Total Votes: 641


text:
Illustration: Michael Leunig.
RAPE occurs in India every 20 minutes. As protests rage across the nation against the gang rape of a young student who is now fighting for her life, two more gang rapes were reported. These were of a 10-year-old girl and a 14-year-old girl. The 10-year-old victim has since died. Esmerelda Jelbart Wallbridge (''The beast in Delhi's belly'', Comment, 26/12) asks Australians to fight for the rights of the women and children of India. She notes Julia Gillard's blistering speech about misogyny.
The world has become a global village. You have to earn a right to be included in it. Three gang rapes of young women in the space of two weeks is not part of a civilised country. I feel great compassion for the women and children of India. Gang rapes, bride burning and sex trafficking are not acceptable. To be part of the global village, one must act responsibly in regard to humanity and ecology. India has failed.
I boycott any product exported from there. These products were probably hand-sewn by a depressed Indian girl who was pulled out of school to work 10 hours a day to sustain our mass-consumption lifestyle.
Illustration: Jack Chadwick.
Susan Stevens, Sunbury
A hypocritical stance
AN UPDATE from an Australian public health professional who has settled in India: Esmerelda Jelbart Wallbridge is dreaming if she thinks Australia has earned a right to lecture Delhi about public safety for women. The attacks against Indians in Melbourne are very fresh in people's minds here, and recent reports of racist slurs against women on public transport in Australia also made the news. Any pressure on Delhi from Australia to improve safety would be met with amusement, at best.
The violence is, in part, a reaction against women's increased mobility - often seen as a Western influence. The solution to this problem is not going to come from the West, certainly not Australia. It is true there is a lot of public and domestic violence against women. But there are many successful policy initiatives to promote gender inclusion, such as quotas for women to be included in local government. Australians might like to learn more about these successes and replicate them at home.
Anna Schurmann, Bangalore, India
Australia's rape shame
I HAVE visited India five times and experienced staring, leering, groping and sexual propositioning by young men half my age. I concur with Esmerelda Jelbart Wallbridge's characterisation of women's experiences with Indian men in an otherwise wonderful country.
However, as the mother of a 15-year-old daughter who was pack-raped by her Australian schoolmates, I ask Ms Wallbridge to reflect carefully on the subject of cultural relativism. There is no place for Australian men on the high moral ground. Australian women, too, are pack-raped, but for a variety of self-protective reasons most choose to remain silent, as my daughter did.
Those Indian men who are standing with their mothers, sisters, daughters, partners and female friends against Delhi's most heinous exercise of sexual power should be applauded. How many Australian men would do the same?
Name and address withheld
When honesty is not the best policy
THE Greens have announced a party platform portraying many of their core beliefs as ''aims and principles'' rather than explicit policies, presenting a smaller target for critics (The Age, 27/12). Their problem resembles that of John Hewson with Fightback. If you release your policies for mature consideration, the only people who read them are your political enemies. They nit-pick and quote selectively in order to prove that you represent a threat. The fact that your proposals are an agenda for the next 30 years is overlooked amid horror stories about the cost. No regard is given to the time you will have to find the money or the policies' benefits.
People say they want parties with vision. But to achieve this, one needs to stick one's neck out which is dangerous in adversarial politics. Is this why only one person in 10 votes Greens, even though they stick up for issues supported by at least three in 10, and sometimes as many as nine in 10, people?
Colin Smith, St Kilda
We love our grass
WHENEVER Robert Nelson gets a break from his day job, he launches an attack on gardens, both in our homes (Comment & Debate, 20/9/09) and our public spaces (Comment & Debate, 27/12). To call on Europe for support for his enthusiasm for hard surfaces and walls is bizarre. London has Hyde Park. Berlin has the Tiergarten. Munich has the English Garden. Paris has the Jardin des Tuileries. All of them have grass.
The ''grassy delusion of the suburbs'' is how most of us choose to live. We do not want concrete towers and asphalt everywhere, and we have the space. Melbourne needs its green spaces, whether the green wedges acting as the lungs of the city, the public parks and gardens that give us respite from the ugliness of modern architecture or our backyard gardens in which the children can play and we can entertain our friends.
Chris Curtis, Hurstbridge
Path of destruction
EVERY year at the end of the football season, Yarra Park is a wreck. Hundreds of thousands of dollars are spent repairing the lawns, and by Christmas Day they look wonderful. Then the cars for the Boxing Day Test park on the lovely new grass and start the process of destruction again.
As I walked my dogs through the Punt Road car park entrance yesterday, I was accompanied by four vehicles: three 4-wheel drives and one Mercedes sedan carrying a grand total of four cricket fans. Here is a simple way to cut the cars. Instead of a $10 flat parking fee, vehicles with one person should pay $40, those with two people should pay $30, and those with three should pay $20. Vehicles with four people should pay $10. The extra revenue could be spent on a campaign to encourage people who are going to the MCG to use public transport.
Christopher Hector, Richmond
Joyous celebration
DIANA Olsen (Letters, 26/12) is concerned that political correctness meant Australian children did not sing Christmas carols or learn about the nativity. Instead of watching Songs of Praise on television, she should have gone to local church where children of all ages participated in the most wonderful Christmas celebrations. I have been to two parishes in the past two years and both times the children were the ones that made the mass. They sang Christmas carols and participated in the re-enactment of the birth of Christ.
Madeline Nolan, Mildura
Active service
KARL Reed's idea for the establishment of a compulsory national service for young people to respond to natural disasters (Letters, 27/12) has merit. One of the greatest enemy for some young people, especially over the holidays, is boredom. Having a mechanism to equip them with specific skills, knowledge and strategies to help their community in an emergency ticks all the boxes. It is the compulsory part that might rankle.
Dr Michael Carr-Gregg, psychologist
Sense of ownership
KARL Reed's suggestion is constructive. Government funding used to enable less academically oriented secondary students to spend some afternoons gaining skills by working on projects in local reserves. Communities such as Trafalgar and Camperdown benefited greatly and they gained new facilities. Unexpectedly, they also experienced great reductions in vandalism. This was thought to be a result of some students who may previously have been vandals feeling a sense of ''ownership''over the projects.
Sadly this funding was removed by the current Victorian government. We would be well served if our political environment was more receptive to such visionary initiatives.
John Poppins, Mt Waverley
A nasty tweet
JOE Hockey, what a low act to criticise Julia Gillard for going on holidays after she agreed to ditch the surplus and sarcastically tweeting: ''That is leadership. Real courage''. Why is it wrong for Gillard to help her mother, who recently lost her husband, through Christmas? Do you have any compassion, Mr Hockey?
Sigbert Muijsers, East Ballarat
Aussies vs Kiwis?
AUSTRALIAN Rules is becoming more popular in New Zealand despite the influence of rugby, and St Kilda will play the Swans in Wellington on Anzac Day. Why not also have an annual Australia verses New Zealand AFL game, with the first game at the MCG or Etihad Stadium? After that, each country could take it in turns to host the game. It would be a great way for young Kiwi players who want to play for an AFL club to show their potential and it could become as popular as the State of Origin was with fans.
Malcolm Webster, Boronia
Ticking time bomb
WE may not have the firearms issues that exist in the United States, but we have very real problems in our mental health service. During the Kennett era, thousands of people were released (forced out) of supported accommodation and into the community. Many are now friendless, living in poverty in boarding houses or on the streets and with no community support.
They wander the streets, some talking to themselves, some begging, others scrounging in garbage bins or picking up butts. We look away and keep walking. These people are the ones who are easy to identify but many are suffering in their own private hell. The world is getting faster, greedier and less accommodating for people who are unable to keep up. It is a ticking bomb. Someone, somewhere, will do something unacceptable and the powers that be will ask: ''How did this happen?''.
Gainore Atkins, Altona Meadows
Call for an enquiry
AS A retired senior scientist, I am aware that all is not well with Commonwealth science agency CSIRO (The Age, 27/12). A considerable amount of its funding is spent on unproductive managers and spin doctors, with very little left over for scientists to conduct research. And the morale of scientists is at an all time low.
Until the end of the 1980s, the CSIRO regularly conducted independent public reviews of its divisions and performance. All stakeholders, including the public and scientists, were invited to make submissions to the review committee and review reports were freely available to interested people. Such reviews are no more. It is time for a public enquiry into the CSIRO. If the CSIRO fails, Australia's future is at risk.
Bill Mathew, Parkville
Warped priorities
KENNETH Davidson 24/12/12) says the Victorian Government is paying $658 million a year for 28 years to private partners in the Wonthaggi desalination public-private partnership (Comment & Debate, 24/12). But it cannot find $40,000 next year for the Melbourne Jazz Co-operative (Arts, 24/12), which supports emerging and established artists. The Co-operative will receive no funding in 2013 after two applications for grants to Arts Victoria were unsuccessful.
Is it too much to ask for such a paltry sum? A disgraceful decision.
Denis le Neuf, Mont Albert
Dubious. So what?
I CAN'T say I support Brisbane Heat coach Darren Lehmann's questioning of West Indian all-rounder Marlon Samuel's bowling action in the Big Bash League - ''Lehmann steps into chucking row'' (Sport, 24/12). World cricket is littered with ''dubious'' bowlers. The purity of bowling actions died the day the International Cricket Council cowered to a push by the sub-continent for a 15-degree bend in the bowling arm.
Sadly, nothing short of a baseball pitch is legal in today's cricket.
Nick Magafas, West Sunshine
... and another thing
WHY doesn't any political party tackle the problem of leaf blowers? We need an amnesty period on them or, even better, a buyback program.
John Bye, Elwood
I CAN see the NRA lobbying for armed security to safeguard firemen going about their duties.
Peter McGill, Lancefield
THE possibility of gun control in the US is similar to the possibility of Australia legislating for all cars to be 4-cylinders with a maximum speed of 80km/h. Both would save lives but neither will be implemented.
David Bond, Portarlington
TO PARAPHRASE the NRA: Now that we've armed all the bad guys, we need to arm everyone else.
Peter Worcester, Glen Iris
THE only good thing for the world about the American fiscal cliff legislation is that it includes cuts to the defence budget.
Rod Matthews, Fairfield
IF achieving a surplus in Victoria means closing TAFEs, paying teachers and nurses low wages and reducing healthcare, I'd rather go without it.
Adrian Tabor, Point Lonsdale
HERE'S a fabulous way to help balance the federal budget and reduce climate change - end the fossil fuel subsidies.
Barbara Fraser, Burwood
HOW would Abbott know that Labor MP Graham Perrett wrote a letter about the Slipper case? He probably didn't read it.
Henry Herzog, St Kilda East
IT'S time to stop the live animal export trade as other countries have different standards.
Rex Williams, Ainslie, ACT
THE Coalition's $4 billion vision of cranes rising in the sky within a year of its election has been thrown into doubt (26/12). It sounds more like pie in the sky.
Liz O'Day, Kew
ALL I want for 2013 is a wind energy industry and a safe climate for my kids. It will mean closing dirty, coal-fired power stations.
Robert Brown, Glen Iris
WHY is Robert Nelson (Comment, 27/12) waging a crusade against Melbourne's gardens? Why does he think European cities don't have parks and gardens? Maybe he should stick to art.
Caroline Miley, Heidelberg
GEORGE Pell mentioned those who had ''suffered at the hands of fellow Christians'' in his Christmas message. The abusers have lost the right to call themselves Christians.
Jean Tansey, Berwick


text:
You can take a guided horseback ride into the forests or out onto the beaches of Andrew Molera State Park with Molera Horseback Tours (831/625-5486, http://molerahorsebacktours.com [1], $25–60). Tours of 1–2.5 hours depart each day starting at 9 a.m.—call ahead to guarantee your spot, or take a chance and just show up at the stables 15 minutes ahead of the ride you want to take. If you prefer, call to book a private guided ride for yourself and your party.
Each ride takes you from the modest corral area along multi-use trails through forests or meadows, or along the Big Sur River, and down to Molera Beach. You'll guide your horse along the solid sands as you admire the beauty of the wild Pacific Ocean.
Molera Horseback Tours are suitable for children over six and riders of all ability levels; you'll be matched to the right horse for you. All rides go down to the beach. Tours can be seasonal, so call ahead if you want to ride in the fall or winter.
Guides share their knowledge of the Big Sur [2] region and wildlife, and welcome questions about the plants you're seeing as you walk your horse down the trail. Early-morning and sunset rides tend to be the prettiest and most popular.
[1] http://molerahorsebacktours.com
[2] http://www.moon.com/destinations/california/central-coast/big-sur


text:
Title reads: "Official Government Film" (Children Fight for Life)
Various shots of injured or dead children caught under rubble due to 'enemy bombs'. Hospital ward where children with Diphtheria attend. Doctor speaking of immunisation. Close-up of child smiling with nurse. Various shots inside...
We always welcome comments and more information about our films.
All posts are reactively checked. Libellous and abusive comments are forbidden.


text:
32 results for "Stuart Leavenworth, Editorial page editor"
Stuart Leavenworth: Can we do more to retain region's emerging civic leaders?
Saturday, May 11, 2013 at 12:00 AMOne of the reasons I'm grateful to live and work in midtown is the serendipity. On Thursday evening, I was working in my office at 21st and Q. Suddenly I heard the sounds of a brass band belting out New Orleans music. "Am I hearing thin...
Stuart Leavenworth: Fifty years later, supporters of 'Gideon' ruling lose their champion, Anthony Lewis
Saturday, March 30, 2013 at 12:00 AMFifty years ago this month, the U.S. Supreme Court handed down a monumental decision, ruling that state courts were required to provide legal counsel in criminal cases for defendants who could not afford to pay for their own lawyers.
Stuart Leavenworth: Scope and impact of Delta twin tunnels is starting to hit home
Sunday, March 17, 2013 at 12:00 AM"Tunnel muck" -- a byproduct of boring tunnels through the Delta to more easily ship water south -- is just part of the big footprint of the proposed Bay Delta Conservation Plan.
Stuart Leavenworth: Is Sacramento ready to face challenges of 'farm to fork'?
Sunday, March 3, 2013 at 12:00 AMMayor Kevin Johnson laid out three priorities in his State of the City speech Thursday greening the city, improving K-12 education and securing an ownership and arena deal for the Sacramento Kings.
The Swarm: Rise & Opine: Rubio, Rubio, wherefore art thou, Michael Rubio?
Tuesday, February 26, 2013 at 8:16 AMRise & Opine offers opinions on opinions, with varying levels of caffeine, three days a week.
The Swarm: Rise & Opine: Did Michelle Obama flub at the Oscars?
Monday, February 25, 2013 at 9:06 AMRise & Opine offers opinions on opinions, with varying levels of caffeine, three times a week.
The Swarm: Rise & Opine: Rogue cop, bag ban scares, Texas poker, etc.
Monday, February 11, 2013 at 8:03 AMRise & Opine offers opinions on California opinions, three days a week.
Stuart Leavenworth: A CEQA advance environmentalists should explore
Sunday, February 10, 2013 at 12:00 AMThe compromise I suggest would create a CEQA exemption for housing, transit and certain mixed-use projects within cities and only cities. It would not apply to developments that counties might want in their unincorporated areas.
The Swarm: Rise & Opine: Lance Armstrong lied - should readers sue?
Monday, February 4, 2013 at 6:12 AMRise & Opine offers opinions on opinions about California three times a week.