Categories
MySQL

ALTER TABLE .. ORDER BY

Today a customer mentioned reordering a MyISAM table to get rid of fragmentation. I asked them to clarify what they meant by reordering, assuming that they were running an OPTIMIZE or a NULL ALTER TABLE operation and they said that they use ALTER TABLE t1 ORDER BY f1, f2, f3,..etc;

via Things you manage to miss – ALTER TABLE .. ORDER BY – The Soapbox.

Categories
MySQL Tools

restoring a single table from mysqldump

Following Restore one table from an ALL database dump and Restore a Single Table From mysqldump, I would like to add my own thoughts and comments on the subject.I also wish to note performance issues with the two suggested solutions, and offer improvements.

via On restoring a single table from mysqldump | code.openark.org.


face@mac:V:150 $ sed -n “/^– Table structure for table `mx_categories`/,/^– Table structure for table/p” wordpress_2009-12-02_02h15m.Wednesday.sql
— Table structure for table `mx_categories`

DROP TABLE IF EXISTS `mx_categories`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mx_categories` (
`cat_ID` int(4) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(55) NOT NULL DEFAULT ”,
`category_nicename` varchar(200) NOT NULL DEFAULT ”,
`category_description` text NOT NULL,
`category_parent` int(4) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`cat_ID`),
UNIQUE KEY `cat_name` (`cat_name`),
KEY `category_nicename` (`category_nicename`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


— Dumping data for table `mx_categories`

LOCK TABLES `mx_categories` WRITE;
/*!40000 ALTER TABLE `mx_categories` DISABLE KEYS */;
INSERT INTO `mx_categories` VALUES (1,’General’,’general’,”,0),(2,’Unix Notes’,’unix-notes’,”,0),(3,’AppleScript Notes’,’applescript-notes’,”,0),(4,’Misc Notes’,’misc-notes’,”,0),(5,’System Software Notes’,’system-software-notes’,”,0),(6,’Applications Notes’,’applications-notes’,”,0),(7,’Web Serving’,’web-serving’,”,0),(8,’Utilities Notes’,’utilities-notes’,”,0);
/*!40000 ALTER TABLE `mx_categories` ENABLE KEYS */;
UNLOCK TABLES;


— Table structure for table `mx_commentmeta`

Categories
MySQL

Rolling Time-based Partitions

With a high volume of data, this sounds like a table partitioned on day boundaries (in MySQL 5.1). See Sarah’s blog and her links for a quick ramp-up on time-based table partitioning (http://everythingmysql.ning.com/profiles/blogs/partitioning-by-dates-the). One great benefit of table partitioning is that you can drop a partition to lose millions of rows in one quick statement, much faster than deleting millions of rows. Sort of like a partial TRUNCATE TABLE.

via Glynn’s Thoughts on Databases: Rolling Time-based Partitions.

Categories
MySQL

Generating numbers out of seemingly thin air

The existence of number tables has always been a little pain. Yes, they’re very, very simple, but they need to be there. So if you just need to script some SQL query, you may find that you need to create such tables. Ummm… this means you need to have privileges (at least CREATE TEMPORARY and INSERT, if not CREATE).

via Generating numbers out of seemingly thin air | code.openark.org.

Categories
MySQL

Tuning your MySQL server

In a SQL server, the data tables sit on disk. Indexes provide a means for the server to find a particular row of data in the table without having to search the entire table. When the entire table has to be searched, it's called a table scan. Most often, you want only a small subset of the data in the table, so a full table scan wastes a lot of disk I/O and therefore time.This problem is compounded when data must be joined, because many more rows must be compared between the two sides of the join.

via Tuning LAMP systems, Part 3: Tuning your MySQL server.

Categories
MySQL

restore file without binary logging

SET SQL_LOG_BIN=0;

via MySQL :: Re: restore file without binary logging.

Categories
MySQL

FROM_UNIXTIME


select user_id, username, from_unixtime(user_regdate) from phpbb3_users where user_lastvisit = 0 order by user_regdate;

Categories
MySQL

REPLACE INTO: think twice

The REPLACE [INTO] syntax allows us to INSERT a row into a table, except that if a UNIQUE KEY (including PRIMARY KEY) violation occurs, the old row is deleted prior to the new INSERT, hence no violation.

Sounds very attractive, and has a nice syntax as well: the same syntax as a normal INSERT INTO’s. It certainly has a nicer syntax then INSERT INTO … ON DUPLICATE KEY UPDATE, and it’s certainly shorter than using a SELECT to see if a row exists, then doing either INSERT or UPDATE.

via code.openark.org » Blog Archive » REPLACE INTO: think twice.

Categories
MySQL

Reporting SpeedUp Trick

I've been asked to make some reports recently for some people in my company.

Almost all of them are quite heavy and hit the database pretty hard.

The thing is that these reports are usually generated once or twice a month, but they process a year's worth of data. Every time they are generated, they really upsets my poor production MySQL database.

I was thinking if there maybe could be a better way to just save the processed data in a table and update it every now and then.

via When pet projects bite back!: Reporting SpeedUp Trick.

Categories
MySQL

PURGE MASTER LOGS

PURGE MASTER LOGS TO ‘mydb-bin.0023’;

Then the binlog before ‘mydb-bin.0023’ will be deleted.

You may also do this:

PURGE MASTER LOGS BEFORE ‘2008-06-13 08:00:00’;