Andy , increase innodb_log_file size to 400mb

DK Sent from Phone

On 03-Jul-2013, at 23:39, Rick James <rja...@yahoo-inc.com> wrote:

> Set innodb_buffer_pool_size to 70% of _available_ ram.  That may be 11G on 
> your 16GB machine, unless you have a lot of other bulky stuff there.  Do 
> _not_ make it so large that it leads to swapping.  Swapping is much worse on 
> performance than shrinking the buffer_pool.
> 
> 36 seconds for a single-row UPDATE using the PRIMARY KEY -- Something else 
> _must_ have been interfering.  DELETE was suggested; ALTER is another 
> possibility.  Even with a totally cold cache, that UPDATE should have taken 
> much less than one second.  I suspect the problem will not recur.
> 
>> KEY `status` (`status`),
> That index will probably never be used, due to low cardinality.  Either DROP 
> it, or make it 'compound'.
> 
>> `flags` varchar(10) DEFAULT NULL COMMENT 'pipe-separated flags',
> Consider the SET datatype.
> 
> 5.6 has some performance improvements, but not related to this query.
> 
> Please have the slowlog turned on.  There could be extra, useful, info in it.
> 
> 
>> -----Original Message-----
>> From: spameden [mailto:spame...@gmail.com]
>> Sent: Tuesday, July 02, 2013 7:28 PM
>> To: Singer Wang
>> Cc: Andy Wallace; mysql list
>> Subject: Re: database perfomance worries
>> 
>>> 
>>>> We are on a quest to improve the overall performance of our database.
>>> It's
>>>> generally
>>>> working pretty well, but we periodically get big slowdowns for no
>>> apparent
>>>> reason. A
>>>> prime example today - in the command line interface to the DB, I
>>>> tried to update one record, and got:
>>>> 
>>>>   mysql> update agent set number_of_emails = 5 where acnt =
>> 'AR287416';
>>>>   Query OK, 1 row affected (36.35 sec)
>>>>   Rows matched: 1  Changed: 1  Warnings: 0
>>>> 
>>>> 36 seconds to update one table? The primary key is `acnt`. If I run
>>>> the same (basic)
>> 
>> Check if there is some DELETE running for the selected table.
>> 
>> If there is a DELETE involving whole table it might be locking up
>> database.
>> 
>> Look into mysql-slow.log
>> 
>> Try to optimize your application queries with EXPLAIN.
>> 
>> 
>>> [!!] InnoDB data size / buffer pool: 7.8G/5.5G Variables to adjust:
>>> innodb_buffer_pool_size (>= 7G)
>> 
>>> 2 GB innodb_buffer_pool is a joke for a dataset of 33 GB
>> 
>>> that leads in permanently I/O on mixed load at the chances are high
>>> that there are times where nothing needed to operate is in the
>>> buffer_pool and on concurrent load mysqld ends in repeatly swap data in
>>> and out of the pool
>> 
>>> at least all repeatly accessed tables should fit permanently in the
>>> buffer
>> 
>> it depends on the load and how much data you're acquiring.
>> 
>> if you have 33GB in total, but only using few same tables in total size of
>> less than 2GB at the same time it would work just fine.
>> 
>> for example I have 136GB of data, but my buffer is only about 10Gb, but
>> most of the queries work just fine (I'm using it for mostly read-only
>> things).
>> 
>> but ofc, you need to check your system usage, if mysqld swaps its a bad
>> thing and most likely you need to either upgrade your hardware or consider
>> checking your data architecture (i.e. use LIMIT for quieries, add more
>> indexes, split large tables for a smaller ones which you really update or
>> store large data in mongodb etc).
>> 
>> 
>> 
>>>> command again a few seconds later, I get:
>>>> 
>>>>   mysql> update agent set number_of_emails = 15 where acnt =
>>> 'AR287416';
>>>>   Query OK, 1 row affected (0.00 sec)
>>>>   Rows matched: 1  Changed: 1  Warnings: 0
>>>> 
>>>> Why would we be getting such huge variations? We're running Solaris
>>>> 10 on i386, with
>>>> 4 processors and 16GB of memory, MySQL 5.1.46-log. We are working
>>>> out a plan to upgrade to MySQL 5.6, but I certainly don't want to
>>>> depend on that upgrade to solve all performance problems.
>>>> 
>>>> CREATE TABLE `agent`
>>>> (
>>>> `acnt` varchar(20) NOT NULL,
>>>> `passwd` varchar(20) NOT NULL,
>>>> `package` char(2) DEFAULT NULL,
>>>> `data_template` varchar(20) DEFAULT 'NULL',
>>>> `default_search_type` enum('1','2','3') NOT NULL DEFAULT '1',
>>>> `status` enum('A','T','P','C','D','X','**S') NOT NULL
>>>> `flags` varchar(10) DEFAULT NULL COMMENT 'pipe-separated flags',
>>>> `aliases` varchar(4000) NOT NULL DEFAULT '',
>>>> `offices` varchar(4000) NOT NULL DEFAULT '',
>>>> `license_no` varchar(40) NOT NULL DEFAULT '',
>>>> `agent_code` varchar(20) DEFAULT NULL,
>>>> `office_code` varchar(20) DEFAULT NULL,
>>>> `parent_acnt` varchar(20) DEFAULT NULL,
>>>> `number_of_agentlinks` int(11) DEFAULT NULL,
>>>> `number_of_emails` int(11) DEFAULT NULL,
>>>> `fname` varchar(30) DEFAULT NULL,
>>>> `lname` varchar(30) DEFAULT NULL,
>>>> 
>>>> <<whole bunch of other fields>>
>>>> 
>>>> PRIMARY KEY (`acnt`),
>>>> KEY `parent_acnt` (`parent_acnt`),
>>>> KEY `status` (`status`),
>>>> KEY `email` (`email`)
>>>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8
>>>> 
>>>> 
>>>> --
>>>> Andy Wallace
>>>> iHOUSEweb, Inc.
>>>> awall...@ihouseweb.com
>>>> (866) 645-7700 ext 219
>>>> --
>>>> "Sometimes it pays to stay in bed on Monday, rather than spending
>>>> the
>>> rest
>>>> of the week debugging Monday's code."
>>>> - Christopher Thompson
>>>> 
>>>> --
>>>> MySQL General Mailing List
>>>> For list archives: http://lists.mysql.com/mysql
>>>> To unsubscribe:    http://lists.mysql.com/mysql
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/mysql
> 

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to