Skip to main content

Tizra gets faster

Non-technical summary: things are lots faster at Tizra sites and admin tools. There's certainly more to do, but we've got more tricks up our sleeves! Because the big current speed boost is related to one cause, and it took me a while to track down, the geek appendage to this post describes what we found and how we fixed it.

Geekly details

I spent a bunch of time last week looking at system performance. As we've been adding customers and usage, we were beginning to feel the pinch. Performance always varies, but the range of response times was getting wider as things slowed, leading me to think that there might be some systemic issues that would give us a quick improvement (and indeed there was some Linux tuning that helped a bit). But data access seemed to be the real issue, so I spent a bunch of time looking into hibernate, and our caching and querying, and then wound up spending a day or so basically watching all the queries go through Postgres. And you know what? most of them seemed much slower than they should be, even though they are pretty hairy.

Of course, the next step was to check for database indexes, and how the query plans were using them. But in hand testing the plans looked good, and the indexes were sensible. But when run by hand the queries were also significantly faster than when hibernate ran them! This was much easier to see now that we have a live load, which is inevitably different from a test setup. So why the difference? Postgres was ignoring our indexes only when Tizra publisher made the queries.

Turns out that there's an old bug in Postgres where it would ignore indexes on bigint fields in prepared statements unless there was an explicit data type cast. (That type confusion was an obscure result of skew between Postgresql and the SQL standard.) And that was the behavior I was seeing, even though we were using a much more recent vintage of all the software. This was terrible for us, because we have a multi-tenant publishing system for large document collections and we use bigints as primary object identifiers!

So, why the old problem if the bug is gone, and we are not using postgres 7? It turns out that we dynamically build those hairy queries, in HQL (hibernate query language), using the String trick. But nowadays instead of making your indexes work, it breaks them! The differences are invisible in the SQL. It turned out that we were in a version "donut hole." Our database was recent enough so the String trick worked the opposite way (preventing fast queries for our prepared statements), but the JDBC driver wasn't making the calls in the right way to make the old trick work. End result: we're now running the latest JDBC driver with compatibility options set while we update our hairy query generator. And now we can really start tuning our setup!

If the web had not provided the history of the old bug, I would have had a much worse time even knowing where to look to find our somewhat subtle configuration issue. So enjoy the speedup, I sure am!

Comments

Anonymous said…
This is pretty wierd, any chance you can post the exact version numbers of Postgres, Hibernate, and JDBC involved?

Popular posts from this blog

Why Books in Browsers? A Closer Look at e-book Publishing Software Choices

What’s an ebook?  

For many, the first thought is of a Kindle, Nook or similar device, designed for a single purpose and packed with texts downloaded from a single retailer.  However, it’s easy to forget just how new that notion of ebook publishing software is...or how quickly it’s changing. As broadband connections and computing power become more pervasive, the idea of “books in browsers” or “books in the cloud” is gaining traction.  As has already happened in other media with services like Hulu, Netflix and Spotify, book publishers are starting to see the value in streaming content direct to users as they need it, rather than requiring them to download it to their own device before use.

The Case for Books in Browsers:

Delivering books or content in browsers is ideal for publishers that want to build a direct relationship with their consumers, as well as to maintain control over both content delivery and user experience. The benefits of web-based publishing include:


Audience.  With about …

Princeton University Press Partners with Tizra to Take Einstein Papers Online

Unprecedented project will make nearly 30 volumes of Albert Einstein's papers available throughout the world.

October 9, 2013 (Providence, RI) -- Princeton University Press has selected Tizra as the digital publishing platform it will use to make The Collected Papers of Albert Einstein available online.  One of the most ambitious publishing ventures ever undertaken in the documentation of the history of science, The Collected Papers will ultimately comprise more than 14,000 papers selected from all phases of Einstein's career and fill nearly 30 volumes.

The online version hosted by Tizra will provide easy, searchable access to the full archive, and will offer features including:

Powerful, bilingual search, with page-specific search results.Links between German text and corresponding English translations.Persistent, page-specific URLs to facilitate citation, referencing and discussion.Easy online viewing in all common web browsers, including those on the most popular mobile dev…

New Mobile-Optimized Template Simplifies Site Design

Pre-designed templates are increasingly popular as a quick way to get new Tizra sites launched, or to refresh the design of an existing site.  A key driver in both cases is keeping up with increasingly high user expectations for ease of use and visual appeal, particularly on mobile devices. To address these needs, we’ve released a major upgrade to our Bootstrap-based responsive design template. The new version makes it much easier to customize with your own colors and logo, improves mobile interaction with the latest version of the Bootstrap framework, and adds numerous other visual and usability refinements.

Existing Tizra customers can try it out now by selecting the “Bootstrap Responsive Template” in the PRESENTATION area. Or if you’d like to see a quick preview, take a look at this demo site… https://abedemo.tizrapublisher.com