These are the slides to a talk I did earlier this week for students of the professional bachelor in ICT course at KaHo St. Lieven. I wanted to give a clear and simple introduction to the memcached service, as I think it’s an invaluable tool in today’s web development.
The slides for my presentation at FOSDEM 2010 are now available online at slideshare. In this presentation I describe a successful client implementation with the result of 10x performance improvements. My presentation covers monitoring, reviewing and analyzing SQL, the art of indexes, improving SQL, storage engines and caching.
The end result was a page load improvement from 700+ms load time to a a consistent 60ms.
10x Performance Improvements – A Case Study View more presentations from Ronald Bradford.
Maximize your strengths, minimize your weaknesses.
You can apply this approach to many things in life, I apply it to describing and using MySQL the product, and it’s components. The Query Cache like many features in MySQL, and indeed features in many different RDBMS products (don’t get me started on Oracle *features*) have relative benefits. In one context it can be seen as ineffective, or even detrimental to your performance, however it’s course grain nature makes it both trivial to disable dynamically (SET GLOBAL query_cache_size=0;), and also easy to get basic statistics on current performance (SHOW GLOBAL STATUS LIKE ‘QCache%’;) to determine effectiveness and action appropriately.
The Query Cache is course grained, that is it is rather simple/dumb in nature. When you understand the path of execution of a query within the MySQL kernel you learn a few key things.
- When enabled, by default the Query …
It’s been a while since I’ve posted my first post about the way we do document pages caching in Scribd and this approach has definitely proven to be really effective since then. In the second post of this series I’d like to explain how we handle our complex document URLs and logged in users in the caching architecture.
First of all, let’s take a look at a typical Scribd’s document URL: http://www.scribd.com/doc/1/Improved-Statistical-Test.
As we can see, it consists of a document-specific part (/doc/1) and a non-unique human-readable slug part (/Improved-Statistical-Test). When a user comes to the site with a wrong slug in the document URL, we need to make sure we send the user to the correct …
[Read more]
This is a presentation I gave at the Cloud Expo Europe in London
on the 21st of May 2009.
I speak about: Caching the results of processed data - data that
had business logic applied to it - to the database to be re-used
later.
Caching
Business Logic in the Database
As the title says, I will be speaking at the Cloud Computing Expo.And while I have spoken before to a bunch of people before,
this is by far, a lot bigger.
The topics I was thinking of talking about was a piece from my
previous presentation which would be about speeding up MySQL for
a web site developers.I have edited those parts of the
presentation and uploaded then to youtube.They can be found
here and here.
What I'd like to talk about is a mixture of the posts I had about
Storing Conditions …
This article accompanies the slides from a presentation on database sharding. Sharding is a technique used for horizontal scaling of databases we are using at Netlog. If you’re interested in high performance, scalability, MySQL, php, caching, partitioning, Sphinx, federation or Netlog, read on …
This presentation was given at the second day of FOSDEM 2009 in Brussels. FOSDEM is an annual conference on open source software with about 5000 hackers. I was invited by Kris Buytaert and Lenz Grimmer to give a talk in the MySQL Dev Room. The talk was based …
[Read more]Image by Peter Forret via Flickr
I've ran into many people throughout my career that were under
the impression that caching is a cure for cancer, world hunger
and global warming. I myself often fall pray to the "just add
more memory" approach for solving problems.
Some 5 years ago, while I was working with ASP classic and VB 6
(yes, you are allowed to chuckle now) on my online movie
collection, I came up with the idea that nothing actually beats a
flat and pre-processed HTML file for speed. I mean, this may seem
obvious and no matter how many times I tried to add cache and do
all sorts of tricks, nothing would beat a static file. The
problem here is that when I suggest this sort of solution, people
would almost always answer that "well, we have caching anyway"
and that …
Since the day one when I joined Scribd, I was thinking about the fact that 90+% of our traffic is going to the document view pages, which is a single action in our documents controller. I was wondering how could we improve this action responsiveness and make our users happier.
Few times I was creating a git branches and hacking this action
trying to implement some sort of page-level caching to make
things faster. But all the time results weren’t as good as I’d
like them to be. So, branches were sitting there and waiting for
a better idea.
Few months ago my
good friend has joined Scribd and we’ve started thinking on
this problem together. As the result of our brainstorming we’ve
managed to figure out what were the problems preventing us from
doing efficient caching: …
So, I am working on MemProxy some. Mainly, I am trying to
implement more of the Cache-Control header's many options.
The one that has me a bit perplexed s-maxage. Particularly
when combined with max-age.
s-maxage is the maximum time in seconds an item should remain in
a shared cache. So, if s-maxage is set by the application
server, my proxy should keep it for that amount of time at the
most. Up until now, I have just been looking at
max-age. But, s-maxage is the proper one for a proxy to use
if it is present. I do not send the s-maxage through
because this is a reverse proxy and, IMO, that is proper behavior
for an application accelerating proxy. However, I do send
forward the max-age value that is set by the application
servers. If no max-age is set, I send a default as defined
in the script. Also, if no-cache …