Bug #40524 Wrong data in information_schema
Submitted: 5 Nov 2008 11:25 Modified: 9 Jan 2015 16:24
Reporter: Eric Savidan Email Updates:
Status: Unsupported Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.0 OS:Linux
Assigned to: Assigned Account CPU Architecture:Any
Tags: information_schema, MySQL Cluster, mysql-5.0.41

[5 Nov 2008 11:25] Eric Savidan
Description:
Hello,

I created a MySQL Cluster with one node with the following parameters :
DataMemory=250M
IndexMemory=50M

I load in this cluster several identical databases just to get the limit of DataMemory.

When cluster is full (=> "ERROR 1114 (HY000) at line 81: The table 'jos_annuaire' is full"), I execute the following sql request to get data memory allocation :
root@localhost on 5.0.41> select SUM(DATA_LENGTH+INDEX_LENGTH)/(1024*1024) as 'Total' FROM  information_schema.tables;
+----------+
| Total    |
+----------+
| 115.1675 | 
+----------+
1 row in set (4.68 sec)

So, I do not understand why I do not get 250 Mb instead of 115 Mb.

Is it a bug in information_schema database or in the sql request ?

Thanks in advance for your help.

Regards

How to repeat:
root@localhost on 5.0.41> select SUM(DATA_LENGTH+INDEX_LENGTH)/(1024*1024) as 'Total' FROM  information_schema.tables;
+----------+
| Total    |
+----------+
| 115.1675 | 
+----------+
1 row in set (4.68 sec)
[5 Nov 2008 11:26] Eric Savidan
config.ini file and logs

Attachment: ndb_error_report_20081105113000.tar.gz (application/x-gzip, text), 186.53 KiB.

[6 Nov 2008 10:21] Bernd Ocklin
Hi Eric,

you can use "ALL DUMP 1000" on the management console and read the output in the cluster log file.
[6 Nov 2008 13:51] Eric Savidan
Hi Bernhard,

thanks a lot for your response :-)

But, according to this -> http://dev.mysql.com/doc/ndbapi/en/ndb-internals-dump-commands.html, this command must be used only for debugging purpose.

My problem is to monitor DataMemory and IndexMemory with a KM Patrol . So, I need data memory and index memory values  regularly (every 10 minutes, for example).

So, how can I do ? Can I use information_schema database to get the data I need ? Another solution ?

Regards.
[13 Nov 2008 9:23] Eric Savidan
Hello,

any idea about getting DataMemory and IndexMemory values to monitor them with a KM Patrol ?

Regards.
[21 Nov 2008 17:02] Don Kehn
Eric:
I can provide you with a program that I wrote during my time in MySQL PS (consulting) that US PS group uses in there tool bag. Its out put is very much like vmstat or ALL DUMP 1000, but at a console see below:
--- NDB ------------------------------------- ----------Trans counts --------------------------------------
nd typ:ps/tpg/pgu/%     typ:ps/tpg/pgu/%       trans  cmmt  read  sprd  writ  attr  conc  abrt  scan  rang
-----------------------------------------------------------------------------------------------------------
 2  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 3  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 2  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 3  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 2  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 3  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
 2  dm:32:16384:8425:51 idx:8:12832:4543:35 -  00000 00000 00000 00000 00000 00000 00000 00000 00000 00000

where:
    printf("---- NDB --------------------------------------\n");
    printf("nd    - node ID\n");
    printf("typ   - memory type (dm: datameMemory idx: indexMemory\n");
    printf("ps    - page size in kb\n");
    printf("totpg - total pagesn");
    printf("pgu   - pages used\n");
    printf("+/-   - ^ increasing, v descreacing, - no change\n");
    printf("%%     - percent used\n");
    printf("---- Trans counts -----------------------------\n");
    printf("trans - Transaction attempted with this node as coordinator\n");
    printf("cmmt  - Transactions Commited with this node as coordinator\n");
    printf("read  - Primary key reads all\n");
    printf("sprd  - Primary key reads reafing the latest commited value\n");
    printf("writ  - Primary key writes (including all INSERTS,UPDATES, & DELETES)\n");
    printf("attr  - Data words used to describe all reads and writes received\n");
    printf("conc  - All concurrent operations occurring ongoing at the moment the report is taken\n");
    printf("abrt  - Transaction with this node as coordinator that were aborted\n");
    printf("scan  - Scans (all) counts\n");
    printf("rang  - Index scans\n");

What is provided a c program and make file to build I can probably static compile it here and provide.

Please let me know if you are interested, as it stands this goes without support.
[24 Nov 2008 13:53] Eric Savidan
Hello Don,

I'm very interested in your C program.

Could you send it to me, please ?

Thanks in advance.

Regards.
[24 Nov 2008 17:24] Don Kehn
mgmvm program source with dynamically compiled version included.

Attachment: mgmvm-5.0.41.tgz (application/x-compressed-tar, text), 133.86 KiB.

[16 Dec 2008 16:53] Eric Savidan
Hello,

I compiled your program and it's working very well :-)

Thanks a lot for your help :-)

Best regards.

Éric
[16 Dec 2008 17:09] Don Kehn
That is great news, made my day!
[19 Feb 2009 9:02] Magnus Blåudd
Setting back to Verified, not working on this now.
[16 Apr 2009 13:48] Jonathan Miller
Verification on current clone and using ndb$info.