Showing entries 36431 to 36440 of 44734
« 10 Newer Entries | 10 Older Entries »
"High Performance" enterprise software

Performance is a subject that seems straight forward, but can get controversial easily. After all, we all want our software to be fast, right?. But there is a catch, performance comes often at a high price: code that is difficult to understand, change or extend.

I remember, many years ago, writing code with a friend. The routine in question was rendering a graphic to the screen, basically copying a piece of data from the RAM to the video card's memory. This was being done in assembly, because every cpu tick was to be optimized. To make a long story short, we even ended up 'unrolling loops'. This means to change something like this:

for f = 1 to 3 {
do something;
}

to

do something;
do something;
do something;

It would use more memory, but it would be faster than the loop. Now, imagine if the loop was longer that three... and if you start reading this code. It'd be more …

[Read more]
"High Performance" enterprise software

Performance is a subject that seems straight forward, but can get controversial easily. After all, we all want our software to be fast, right?. But there is a catch, performance comes often at a high price: code that is difficult to understand, change or extend.

I remember, many years ago, writing code with a friend. The routine in question was rendering a graphic to the screen, basically copying a piece of data from the RAM to the video card's memory. This was being done in assembly, because every cpu tick was to be optimized. To make a long story short, we even ended up 'unrolling loops'. This means to change something like this:

for f = 1 to 3 {
do something;
}

to

do something;
do something;
do something;

It would use more memory, but it would be faster than the loop. Now, imagine if the loop was longer that three... and if you start reading this code. It'd be more …

[Read more]
DrupalCampLA (Free) - come see me speak on Flex & Drupal

I'll be speaking on using Drupal with Adobe technologies such as Flex, AIR, and Flash. The event is totally free but you must register.

DrupalCampLA - http://upcoming.yahoo.com/event/221082/

CouchDb updates

Last weekend, Damien committed the results of a few weeks worth of intensive work on CouchDb to the public Subversion repository.

Fabric is no longer

To speedily gain access to your documents in CouchDb, you create views that define a certain structure. Up to now, Damien's home-grown Fabric language was used to describe the views. This is no longer the case. You now simply use Javascript functions to do it.

XML's gone too (thank god)

For a couple of months now, we were discussing the merit of switching from XML to JSON for transferring data from and to CouchDb. The only advantage of XML was that it was in already. JSON, on the other hand, would add so much goodness that we just …

[Read more]
FrOSCon 2007

I've too been to FrOSCon last weekend. Considering that I announced to give a talk there, this should not surprise anyone. FrOSCon is a two-day event at the university of applied science of Bonn-Rhein-Sieg. It is very well organized (a multitude of volunteers guaranteed that everything went smoothly) has a friendly atmosphere that makes it very likeable.

Apart from meeting some friends I haven't seen in quite a while (there was a lot of catching up to do), I gave a talk about CouchDb. It didn't went as well as I wished but I think it was okay. I even got a few people interested and playing with it.

The FrOSCon officials counted around 1,100 attendees over the weekend, but at no point the conference seemed crowded. This was only the second instalment, but they apparently already found their key to success. FrOSCon is a valuable …

[Read more]
Binary builds of MySQL Proxy available via the openSUSE build service

In addition to the binary downloads that we provide from our site, Linux RPM builds of the MySQL Proxy (both the latest stable version as well as SVN snapshot releases, named mysql-proxy-snapshot) are now available for download from the server:/database repository of the openSUSE build service. It provides packages for a number of Linux distributions, e.g. Fedora 5/6, SLES 9/10 SuSE/openSUSE 10.x. By the way, this repository also contains RPMs of the current 5.0.45 MySQL Community Server for the distributions mentioned above. Thanks a lot to Darix for the initial checkin of the proxy package!

 

New Forums Feature: Mark as [SOLVED]

We consider our forums much like a support ticket database. Each thread representing a ticket. We've always tried to make sure every thread gets an answer. Well, we're happy to introduce a new feature on the forums that we hope that everyone uses. It's the "Mark as [SOLVED]" feature.

We get anywhere between 2,500-3,500 posts per month in the forums. More often than that, people search the forums for answers to their problems. Since August 16, we've logged 5,608 searches. That averages out to 467.3 searches per day!

Wouldn't it be cool if when you searched, you could know right away if the thread was solved? Now you can.

The concept is simple. If the original topic has been answered/fixed, then a moderator will mark the thread as solved. Only moderators can perform this …
[Read more]
How to unmount NFS share mounted with hard option

Few days ago I worked on some customer’s server and there was a problem - their nfs server went down and we were forced to change some settings on their FC4 clients to prevent shares from dieing because of kernel bug. But when we’ve changed settings in /etc/fstab there was one more step before task was completed - we need to remount this share (I mean unmount/mount). But how to perform this operation if there are some processes in D (non-interruptible sleep) waiting for dead share and prevent it from unmounting? They wait because of hard option on the share and lack of intr option and any unmount request would produce a following results:

streaming01:~# umount /storages/2
umount: /storages/2: device is busy
umount: /storages/2: device is busy

So, here is a list of steps you need to do to be able to remount your share.

First of all, you need to send KILL(9) signal to all you processes …

[Read more]
How MySQL executes ORDER BY

In last couple of weeks there has been a tide of ORDER/GROUP BY-related optimization bugs, where I was the fixer or the reviewer. This wasn't an easy job because there is no sane description of how GROUP BY/ORDER BY handling is supposed to work.

To figure it out, I had to write an explanation of how it works. The first part is about ORDER BY. Hopefully there will be subsequent parts that will show how GROUP BY is related to ORDER BY and how it works.

Available means to produce ordered sequences

MySQL has two methods to produce ordered streams.

The first is to use a "range", "ref" or "index" access method over an ordered index. For versions up to 5.1, those access methods naturally return records in the index order, so we get ordering for free (the exception is NDB engine which needs to do merge-sort when it gets data from several storage nodes). In MySQL 5.2, MyISAM and InnoDB have …

[Read more]
How to notify event listeners in MySQL

A high-performance application that has producers and consumers of some resource, such as a queue of messages, needs an efficient way to notify the consumers when the producer has inserted into the queue. Polling the queue for changes is not a good option. MySQL's GET_LOCK() and RELEASE_LOCK() functions can provide both mutual exclusivity and notifications.

This post was prompted by a message to the MySQL general emailing list some time ago, but I'm finally getting around to actually testing the theoretical solution I mentioned then. I can never just think my way through anything that involves locking and waiting... I have to test it.

Showing entries 36431 to 36440 of 44734
« 10 Newer Entries | 10 Older Entries »