February 28, 2007

PHP 4.4.6 Released

The PHP development team would like to announce the immediate availability of PHP 4.4.6. The main issue that this release addresses is a crash problem that was introduced in PHP 4.4.5. The problem occurs when session variables are used while register_globals is enabled. Details about the PHP 4.4.6 release can be found in the release announcement for 4.4.6, the full list of changes is available in the ChangeLog for PHP 4.

Related Posts

(VB 2005 SP1 is released…) (phpMyAdmin 2.10.1 Released) (Microsoft Security Bulletin Advance Notification) (Remove Decision-Making Barriers for Your Application with ISV Platform Certification) (Microsoft Security Bulletin Advance Notification

February 27, 2007

TRUMPF Laser to Embed MySQL in its Manufacturing Products

MySQL AB, developer of the world’s most popular open source database, has added TRUMPF Laser GmbH + Co. KG as a customer for the embedded version of its database. TRUMPF has selected MySQL to control the pulsating solid-state laser in its TruPulse series of welding tools.

Related Posts

(JasperSoft & MySQL Launch Major Upgrade to Business Intelligence Software for the ISV/OEM Market) (Sage 50 HR 2007 Software Suite Ships with Embedded MySQL Database) (Sage Announces Global Partnership with MySQL AB) (MySQL AB Previews New Open Source Database Products) (Wireless/Mobile Case Study: Shop Floor and Quality Management Data Collection

System size and Performance Optimization

Performance optimization is never ending story, you can virtually always find something else to optimize but while on generic system, not tuned by expert you often can get significant performance increase in the matter of hours further performance improvements become more and more time consuming and expensive and gains smaller.

This observation does not only apply to MySQL but to systems running other databases or no database at all as well.

So how does System size come in play here ? Well it is system size and scale what may define how much performance you need to squeeze out, and also how your scaling is set up.

For smaller systems lets say running couple of MySQL servers running another couple can be cheaper than serious application changes and this can be good way to go if you’re not expecting major growth.

This however implies two things - first you can scale system by adding more servers, because scaling up and purchasing more and more powerful servers will not tall you far, especially as MySQL Server may have trouble scaling itself. The second thing - it should be throughput rather than latency problems - for example if your search is taking 10 seconds for the single user on idle seconds you need to fix it and simply adding more boxes may not be enough.

The growth expectation is always interesting trade off. Working with startups We often ask them if they would like me to help them to design architecture which is very easy to implement or which would be efficient and scalable ? Typically we settle on some balance but it does not change the fact - scalable architectures may be more complex to implement. This of course does not mean all simple architectures scale badly - for many tasks simple architectures can be good enough, but it should be right simple architectures. In some cases you might wish to implement simple architecture which you’ll have to redo in the 6 months - just to show proof of concept, see first happy customers and raise investment or fell assured this project is worth to spend savings on. In others you prefer to do things as good as you can from the start. I’m not saying “right” as experience gained during the project development and new features typically require some changes.

If system will be huge from the start, like if Yahoo develops new service and will link it from the front page, or if it is expected to grow quickly it is worth to spend time and money implementing things as optimal as possible. If you’re using 50 5000$ database servers to run the system even 10% performance increase mean 25K$ savings in hardware cost alone not to mention rack space cost, power cost, staff costs and other components of TCO. If you’re MySQL Customer you can also save on support and possibly Enterprise Subscription by keeping number of servers low.

How do we approach it in our practice ? We figure out application size and ask about expected growth, to help to access if minor face lifting such as MySQL Server settings tuning, changing indexes and queries is enough to deliver performance required in cost efficient way, or if we should do some more complex things such as major schema changes and architecture overhaul, adding/changing caching infrastructure and other things.

Of course it is not black and white, typically there are many alternatives and we typically can offer list of items which can be done to the system together with implementation complexity and expected performance impact.

Related Posts

(IBM DB2 Performance Optimization eKit) (MySQL Master Class after HighLoad.RU) (HP StorageWorks Reference Information Manager for Databases: An HP Database Archive Solution) (CodeAnalyst Performance Analyzer for Linux: Getting the Most Out of AMD Processors) (MySQL on OSCON

How to work around Google’s spam filters - Part 3

If you use the wrong search engine optimization techniques then Google won’t list your web site. Read this article to learn how to avoid getting caught be Google’s spam filters.

Related Posts

(15 Google spam filters and how to avoid them - Part 1) (How to work around Google’s spam filters - Part 4) (How to work around Google’s spam filters - Part 5) (15 Google spam filters and how to avoid them - Part 2) (Be aware, strengthening the spam filters

February 26, 2007

Integrating .NET Code and SQL Server Reporting Services

No product can satisfy all developers out of the box. SQL Server Reporting Services is no exception. But you can extend the SSRS expression system with .NET code.

Related Posts

(Integrating .NET Code and SQL Server Reporting Services) (The Baker’s Dozen: 13 Comparisons Between Crystal Reports and SQL Server Reporting Services) (MSDN Webcast: End-to-End SQL Server 2005 Reporting Services (Part 5 of 6) (Level 200)) (Create Reports from Any Data Source Using SQL Server Reporting Services Custom Data Extensions) (Developing Custom MOM 2000 Reports

Integrating .NET Code and SQL Server Reporting Services

No product can satisfy all developers out of the box. SQL Server Reporting Services is no exception. But you can extend the SSRS expression system with .NET code.

Related Posts

(Integrating .NET Code and SQL Server Reporting Services) (The Baker’s Dozen: 13 Comparisons Between Crystal Reports and SQL Server Reporting Services) (MSDN Webcast: End-to-End SQL Server 2005 Reporting Services (Part 5 of 6) (Level 200)) (Create Reports from Any Data Source Using SQL Server Reporting Services Custom Data Extensions) (Developing Custom MOM 2000 Reports

JasperSoft & MySQL Partner to Deliver Operational Business Intelligence Solutions to the ISV/OEM Market

JasperSoft Corporation and MySQL AB today announced the availability of Jasper for MySQL: OEM Edition, a suite of operational reporting products that includes a high-performance interactive report server, a graphical report creation tool, and a pixel-perfect reporting system with dashboards, tables, crosstabs and charts.

Related Posts

(JasperSoft & MySQL Launch Major Upgrade to Business Intelligence Software for the ISV/OEM Market) (MySQL and Business Objects Expand Partnership with New Integrated Business Intelligence Solutions) (MySQL AB Launches New Business Partner Program) (Comsys Selects the MySQL Embedded Server for its Voice Over IP Solutions) (MySQL Launches New Authorized Partner Program for Managed Hosting Providers

February 25, 2007

Pitfalls of converting to InnoDB

We often recommend to our clients to convert their current database from MyISAM tables to InnoDB.
The transfer by itself in most cases is almost plain, however the application can be broken by new unexpected errors
1205 (ER_LOCK_WAIT_TIMEOUT)

Lock wait timeout expired. Transaction was rolled back.

1213 (ER_LOCK_DEADLOCK)

Transaction deadlock. You should rerun the transaction.

It is not hard to handle these errors, but you should be aware of.
This is some thing we do in our PHP applications:

CODE:

  1. class mysqlx extends mysqli {
  2.  
  3.  
  4.   function deadlock_query($query) {
  5.           $MAX_ATTEMPS = 100;
  6.           $current = 0;
  7.           while ($current++ <$MAX_ATTEMPS) {
  8.  
  9.                   $res = $this->query($query);
  10.  
  11.                   if(!$res && ( $this->errno== ‘1205′ || $this->errno == ‘1213′  ) )
  12.                                   continue;
  13.                   else
  14.                           break;
  15.              }
  16.  }
  17. }

You may want to handle ER_LOCK_WAIT_TIMEOUT in different way, especially for web applications where long waiting is not good, you get the idea.

Also there is script we are using for converting databases with many tables, maybe it will be useful for you

CODE:

  1. DBNAME=“dbname”
  2. DBUSER=“user”
  3. DBPWD=“password”
  4. for t in $(mysql -u$DBUSER -p$DBPWD –batch –column-names=false -e “show tables” $DBNAME);
  5. do
  6. echo “Converting table $t”
  7. mysql -u$DBUSER -p$DBPWD -e “alter table $t type=InnoDB” $DBNAME;
  8. done

There is the standard script mysql_convert_table_format in the MySQL distribution, but it requires Perl and DBI package and sometimes they are absent on used server.

Related Posts

(Converting Numbers to Column Names in Excel 2007) (Twelve Days of Scale-Out Article: ‘Top 5 Common Pitfalls to Avoid’) (InnoDB in self-compiled MySQL 5.1) (How Innodb flushes data to the disk ?) (COUNT(*) for Innodb Tables

February 23, 2007

Chargebacks

A couple of days ago, tempting fate, I mentioned that our chargeback rate was 0%.

Some people speculated that I was rounding, and really meant, say, 0.45%.

Nope, I really meant zero. None.

As soon as I wrote this, some wise guy decided to dispute a charge.

Now, a long time ago, I wrote some custom software to screen-scrape our credit card processor”s online information system, and reconciles the transactions it finds there with QuickBooks, where we do the rest of our bookkeeping.

So today, for the first time in the history of that app running, it finds a chargeback on the statement, and doesn”t know what to do with it. So it stops and says, “Unrecognized entry: I don”t know what account VISA CHARGEBACK should be posted to.”

We had to modify the software.

And that”s how I know we”ve never had a chargeback… until today!

Not loving your job? Visit the Joel on Software Job Board: Great software jobs, great people.

Related Posts

(No related posts) 

A belated "five things"…

I thought I’d done this when Bill was kind enough to tag me, but I just found this post tucked away in my “drafts” folder… I know this is well beyond the life of the original meme, but I went through the trouble of writing it, so here are five things you probably don’t know about me:

  • I wrote my senior thesis in college on the role of etiquette in Tom Sawyer and Little Women. (I actually double majored in college and graduated with a Bachelors of Science in American Studies and Computer Science. This may have been the first BS awarded in American Studies at Yale.)
  • My wife and I have a long-standing tradition of reading together out loud at night before we head off to sleep. We started with a number of children’s classics that I had never read as a kid (The Wind in the Willows, Winnie the Pooh) and have since skipped back and forth through a number of different genres. Barnes and Noble’s classics series has been great for this, as we’ve tried out The Count of Monte Cristo, King Solomon’s Mines, several E. Nesbit books and are now starting in to Dracula. When the kids get a little older, we’ll start with them, too, although not with Dracula, of course…
  • I suck at math. Well, I was good enough at faking it to get through multi-variable calculus, but that doesn’t mean that I actually understood any of it. I actually took the GREs twice because I did so much worse on the math section than I did on the verbal and logic sections that I figured that I must have accidentally missed a bubble or something and started answering in the wrong rows. Turns out I didn’t. Second math score was worse than the first.
  • Growing up in the fairly urban, fairly liberal area that is the Research Triangle in North Carolina, there are many ways in which I don’t think I can truly claim to be a Southerner. However, one part of me that will always be Southern is my palate. I constantly mourn the fact that I cannot find any of the following anywhere near Seattle: Chick-Fil-A, Cheerwine, hushpuppies, Brunswick stew, proper cornbread, sliced NC-style BBQ (the kind they make at Bullock’s), creamed corn, Calabash-style seafood, sweetened ice tea or fried okra. Thankfully, we now have Krispy Kreme, red velvet cake is catching on, and I have to say that the Kingfish Cafe’s fried chicken and greens are pretty good.
  • I took piano for nearly seven years and managed to get worse over time, not better. One of the most mortifying moments in my life was when my family was between houses and my mom took me to her friend Mary Lou Williams’s house to practice. (Mary Lou Williams was artist-in-residence at Duke University at the time, where my mom worked and had become friends with her.) Suffice it to say, if Mary had anything to say about my pathetic use of her piano, I mercifully don’t remember it. (I’m sure she was completely gracious as she always was.)

I think this meme is so dead, there’s no point in tagging anyone. Besides, who’s left that hasn’t done it?

Related Posts

(And a belated welcome…) (A little belated crow to eat on ‘Battlestar’…) (7 Google interviews) (Beginning Components for ASP) (Beginning Components for ASP
« Previous entries