Orders Table - 100% CPU Usage
I'm starting to dive into something that looks like a PHP/MySQL issue that is bogging me down (PHP5, MySQL 4.1, Apache 2 on a Windows XP ws).
(At the end of this message, the PHP code)
We operate a virtual store and there's this administrative tool, loaded by the code included, which lists orders by category (new, shipped, cancelled etc.); on the top of the page, it first shows each category's totals (3 new, 18 shipped etc.). Obviously, these data comes from an "orders" table which, as of today, has 8.103 records.
I did increase already cache and buffer sizes on PHP and that helped tremendously to load the tool *if data doesn't change* in between. When it does, the following happens:
1. CPU usage goes all the way up to 100%, and
2. it takes approx. 45-60 seconds like that until the page ends loading.
I'm no PHP programmer, but it seems to me this has to be related to the code below.
Code:
View Complete Forum Thread with Replies
See Related Forum Messages: Follow the Links Below to View Complete Thread
Having MySQL Find Only Orders With Multiple Rows In Another Table
In PHP I could just do a querey of all ordernumbers and within the WHILE do a querey of orderitems where the ordernum equals the original querey, and then do what I need IF numrows > 1. But surely there's a way to maybe do that in the mySQL querey? Some way that might be more efficient than a querey of EVERY order? If there's simply a name of some topic in mySQL that might apply, just tell me to look that up. For example: "Take a look for 'distinct',
Particular DAY From Our Orders
I have a database set up 4.x, and I'm having a little trouble getting orders by day I.E. 2005-12-13 Its stored DATETIME in db: 0000-00-00 00:00:00 How can I compare just a day, and extract whats equal to that date.. ignoring the hours/minutes, etc
Count Orders
If I have a simple loop like below can I query the database and count all orders created by month with a month numeric value? So Jan = 0, and Feb = 1, and so forth kind of like below? for( $i=0; $i<12; $i++ ) { $sql = "SELECT * FROM TBL_ORDERS WHERE month = $i"; $data[] = }
Multiple Orders
eg. link1 has 20 'in', 10 out link2 has 20 in, 5000 out link3 has 10 in, 10000 out how can i order it so that it ends up ordering by 'in' DESC then by 'out' if the in are the same, ending up like link2 link1 link3 ?
Multiple Orders
I have an orders table which has columns: order_id (primary), customer_id, order_amount, num_items etc. I want to count all customers who appear in the table more than once, or more than twice, or any specified number of times. For example I may want to find all customers who have made 6 orders or more. What's the simplest way of doing this?
Display Orders
I'm trying to display orders from the past 60 days, This is the query that I'm using: SELECT DISTINCT o.order_id, o.invoice_id, o.fullname, o.suburb, o.qty, o.processed, o.del_process, o.date_ordered, s.paid_total FROM orders AS o LEFT OUTER JOIN stratapay AS s ON o.invoice_id = s.invoice_id WHERE DATE_SUB(CURDATE(),INTERVAL 60 DAY) <= o.date_ordered ORDER BY o.invoice_id DESC Strange thing is that the results being displayed are all the orders from days 20 through 31 for all months over the past 2 years.
Display Orders
I would like to display the sum of all orders by week for a 3 month interval. How can I go about this. I started the below query and need some help.. SELECT WEEK( fixture ) AS 'allweek', COUNT( * ) as'total' FROM orders BETWEEN DATE_SUB( CURRENT_DATE( ) , INTERVAL 7 DAY ) AND DATE_ADD( CURRENT_DATE( ) , INTERVAL 3 MONTH ) GROUP BY MONTH ( fixture )
Distinct Non-orders
I have a list of customers need to find out how many have not ordered, each customer has it's on record in one table in another I have all their encounters orders and qoute history and in the final table I have all the ordered items here is the query I have select c.customer_id from customer left join encounter as e on c.customer_id = e.customer_id left join order_item as o on e.encouncter_id = o.encounter_id this is where I'm drawing a blank I don't know how to ask for encounter_id that aren't in the order_item table
Duplicate Inserts For Orders
Currently using php/mysql for an order system and now that it's getting alot more visitors I'm having a problem with multiple orders getting inserted into the database. I think I'll have to convert the table to InnoDB but wanted to check incase there was another trick I was missing. The short of it is this php .....
Find Customer With The Most Orders?
I have 2 tables, customers and orders, and I want to find the name of the customer who has the greatest number of orders. customers customer_id, name orders order_id, customer_id, food So I am looking for something like this (in pseudo SQL) select customer_name from customers c, orders o where count(customer_id in the orders table is the greatest)
Show Orders Where All Products Are Available
I have the standard order, and order_products tables, linked by order_id fields. Order table holds the customer id, order date etc, and the order_products table holds the product_id, quantity and order_id. I have been asked to find a way to produce a report on all orders where they are completable. For example, given the fact that product A,B,C and D are in stock, only return those orders which have ordered one or more of those products. If the order also includes product E, currently not in stock, then don't return that order number.
Best Practice To Record Orders Placed Online
Basically, i'm setting up an online shop, and would like to keep a database of all orders that are placed. The host i've chosen, has provided me with 2 MySQL databases. What's the best way to record each order? Bearing in mind:Each order will have a unique ID,Order IDs must automaitcally increase,Each order may have more than one item (item consists of, type, title, price, quantity and status) I was thinking maybe create a new table for each order? Would it be possible to create a table that contained ALL the orders? What would this look like?
/tmp Usage
are there any best practices for /tmp on a std *nix install for MySQL, and if so, what are they ? Also i can't seem to find any more information on what specifically you'd require a LARGE /tmp for in MySQL.
C# Usage
Does anyone know if C# will work with mysql??? I know it does C++, but I don't know if the connectors or whatever are out there for C#
MAX() Query Usage
I have a database of marks and I need to find out the maximum mark taken by each student in any subject. For example If am a student and I have got 60 in Language, 70 in Maths, 80 in Science and 90 in Social Studies, I would need the result "90" and the relevant Social Science subject to be displayed so that I know am good at Social Science of all the subjects. Likewise, my friend got 65 in commerce, 70 in accountancy, 80 in economics and 90 in Applied Maths. As you may see here, the subjects are all different in both these cases. I only need to know this following result That I am good at Social Studies and my friend is good in Applied Maths. The table name is marks. The fields are subject_id, mark_obtained, student_id. When I try this query. Select subject_id, max(mark_obtained) from marks group by student_id In this case, I get the correct maximum mark, but the subject id displayed is incorrect. Can anyone tell me what am doing wrong here?
Getting CPU Usage Of A Query
There are some various queries running on my site that appear to use a whole lot of CPU resources under certain conditions which I haven't identified. Is there any way I can see which queries are using up how much of the CPU instead of just being able to see the general process id for MySQL? I use cPanel and WHM to manage the server.
Index Usage
I have two tables, one is Student, which has studentid, personid, grade, fees as its columns. The other one is Person, which has personid, firstname, lastname, address as its columns. When given a studentid, I need to get the student' info, such as lastname from the db tables. I can do it with two queries as the following: 1. mysql> select personid FROM Student where studentid=1; 2. mysql> select lastname FROM Person where personid="the id I got above"; Or I can do it with one query: 3. mysql> select p.lastname from Student s, Person p where s.studentid=1 AND s.personid=p.personid Both works. However, I can't tell which one is actually faster, since MySQL shows me "1 row in set (0.00 sec)" for all these three queries. Both studentid and personid are primary keys, so they are automatically indexed. Will both indexes be used in query number 3? I saw people said that MySQL could use in a query only one index...Does it mean only one index will be used in query number 3? I am wondering which one will give better performance.
Max(count(*)) Usage?
I have a table with a structure along the lines of customerId itemId copyId which form a primary key. I want to know the max occurence of a particular item, based on copyId. Ie, if 5 customers want itemId 6, 3 want copyId 1, 2 want copyId 2, should return 3 for itemId 6.. I thought something like select itemId, max(count(*)) from items group by itemId might work, but alack, not the case. Suggestions in how to do this with one query?
Counting Usage Per Day
I want to record how many times an application is used in a day. Is it possible to create a table with a date field that automatically creates a new record each day with the present date as the primary key.
Memory Usage
I've been analysing the memory usage of our server and each SQL thread seems to be taking up 10mb - since our site is basically a search site that means we're using 10mb per user which means with our 2gb RAM we can take around 120-200 simultaneous visitors. Other than buying more RAM, what can I do to increase the number of simultaneous connections (ie - how can I reduce memory usage?) By my Calculations we need to be able to accept around 500 simultaneous searchers to meet our target. We will also be increasing the amount of data we have - currently it is around 1.5 million records but that will be gradually increasing to around 10 million - which I'm sure will also increase the memory load on the server. Right now we have 1.4Gb Data and 380Kb overhead.
CURRENT_DATE Usage
I am trying to access some data from a database based on the date. here is the SQL: SELECT internallocation.LocationName, breed.BreedName, animal.DateBroughtIn from breed, animal, internallocation where (breed.ID = animal.BreedID AND internallocation.ID = animal.ShelterLocation AND animal.DateBroughtIn = 'CURRENT_DATE()') This command returns no results... however, if I put in the date like so: SELECT internallocation.LocationName, breed.BreedName, animal.DateBroughtIn from breed, animal, internallocation where (breed.ID = animal.BreedID AND internallocation.ID = animal.ShelterLocation AND animal.DateBroughtIn = '2005-06-24') I get the results I am looking for. How can I use CURRENT_DATE to create a report based on the date, so the SQL does not have to be edited every time to change the day?
Wildcard Usage
Here is an example of the code: $query = "SELECT * FROM table WHERE field = '*' "; I want to return all the fields from the table where the field is any. The program is a little more complicated than this. Basically using a dropdown menu, the user can search all, or a particular field. If they select "search all", I need the ability to insert that into the query statement.
Memory Usage
We have Mysql 5.0 running on RH linux. We have noticed that the swap memory increases but never gets released unless we reboot the server every 2-3 weeks. How would I know whats using this swap memory? Second question which I think maybe related to the first is that mysql is using a lot of memory when I do a top. Is there a way to limit the memory usage of mysql? I have a large table in mysql about 7 GB and I have 8 GB physical memory and swam is set to use 2GB.
MySQL 4.0.xx Admin And Usage
I've recently taken over my non-profit's Web site design, administration and maintenance with relatively little MySQL experience (although I have learned a great deal very quickly). My question is, does anyone know where I can get a manual or something like the current manual "Building your Own Website Using PHP and MySQL .."(ordered from sitepoint.com site). This manual is basing the MySQL on the most current version of 5. I'm looking for something similar that addresses the 4.0.xx(27 specifically) of MySQL
LEFT JOIN Usage HELP!
Schema: Table1 -t1field1 --> primary key -t1field2 -t1field3 Table2 -t2id -t1field1 --> foreign key of t1field1 -t2field2 -t2field3 -t2field4 Database Values: Table1 row1: 1,aaa,123 row2: 2,bbb,123 row3: 3,ccc,123 row4: 4,ddd,123 row5: 5,eee,123 Table2 row1: 1,1,aaa,123 row2: 2,1,jjj,123 row3: 3,1,aaa,123 row4: 4,2,hhh,123 row5: 5,3,hhh,123 row6: 6,2,aaa,123 row7: 7,1,jjj,123 Query: SELECT t1.t1field1, t1.t1field2, t1.t1field3, t2.t2field2, t2.t2field3, t2.t2field4 FROM Table1 AS t1 LEFT JOIN Table2 AS t2 USING(t1field1) WHERE t1.t1field2 = 'aaa' Question: Where do I insert a "WHERE clause" if i wanted to get t2.field2 with a value of 'jjj' only? or my query is totally wrong.
High CPU Usage (99.9%) On RHEL4
i need your help on this issue. I am running a web server in my orginazation internally with mysql-4.1.12 and RHEL4. Now, its been only one day and using 'top' command its showing mysqld process using cpu 99.9% constantly. This is used by say around 4000 users. My my.cnf file : [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid output of mysqladmin version .......... ... Threads: 53 Questions: 324297 Slow queries: 588 Opens: 39976 Flush tables: 1 Open tables: 64 Queries per second avg: 67.788 output of mysqladmin extended-status Variable_name | Value | +--------------------------------+------------+ | Aborted_clients | 742 | | Aborted_connects | 35 | | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 0 | | Bytes_received | 29401860 | | Bytes_sent | 1049908921 | | Com_admin_commands | 2352 | | Com_alter_db | 0 | | Com_alter_table | 0 | | Com_analyze | 1 | | Com_backup_table | 0 | | Com_begin | 0 | | Com_change_db | 40895 | | Com_change_master ...................................................................
Analyze Index Usage
I am running a SELECT query that is taking approx. 200+ seconds to complete. I believe I have the tables indexed properly, but apprarently not. How can I determine what indexes a query is using and evaluate the execution plan (as you would in MSSQL)?
CPU Usage Issues On A Windows Box?
As the site receives over 50 simultaneous hits, mysql uses up just about all cpu usage... I have fine tuned everything - can any one offer any suggestions or share similar experiences??
Can I Limit Ram Usage In MySQL?
I just had my server shut down because my hosting company said I was using 350 to 450 megs of ram. This seems nuts to me as I'm only running a shopping cart with about 1000 items with only about 50 visitors per day. Since they installed mysql on the server, I asked them why they hadn't configured it to work with the parameters of their system. Their response: "Unfortunately, there is no way to limit the RAM usage for mySQL. I apologize for the inconvenience this may cause however there is no way to do this." Do they know what they are talking about???
Lowering Memory Usage?
I was wondering if there's any way I can lower MySQL's = memory useage? It often uses more than 50000kb which I consider to much.. I'm guessing I should play with my.cnf or whatever it's called (located at = C:/ and windows calls it cardnumber or something)...
Mysql Usage Is Very High
My mysql usage goes up to 40% of CPU. I think one of my mysql database is causing the issue. I store images in that tables. The select query takes nearly 0.4S to 1.5Sec to fetch a single row. mysql> desc images; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | bigint(20) | | PRI | NULL | auto_increment | | slideid | int(11) | YES | | NULL | | | filename | varchar(50) | YES | | NULL | | | fileinfo | varchar(60) | YES | | NULL | | | position | int(11) | YES | | NULL | | | image | mediumblob | YES | | NULL | | +----------+-------------+------+-----+---------+----------------+ mysql> select count(*) from images; +----------+ | count(*) | +----------+ | 5022 | +----------+ e.g query results: 1 row in set (0.31 sec) 1 row in set (1.44 sec)
Mysqld Running 100 Pct Cpu Usage
I am testing mysql 4.1 on a Windows Server 2003 with a website running on Internet Information Services. I installed mysqld as a service. As times goes by, mysqld begins to reach 100 pct cpu usage and doesn't goes below that, Windows usage is slow, folders opens slow, navigating locally turns to be slow, and sometimes it makes the server to freeze or restart. When this begins to happen, I executed the command "Show processlist" and I got the following result. If somebody can point me where is my mistake or where is the problem or any solutions for this, I'm still in a learning process for mysql. Code:
Key_index_size Setting And Usage
I am using MySQL 4.1.12, compiled from source, on a Linux 2.6.11.10 kernel form the kernel archive. My Hardware is a Dual Xeon 2.8Ghz with 8GB of RAM and U320 SCSI disks. The database I am serving is about 6GB total, with the bulk of the data in 2 big tables, about 1.5 GB each. The index files for these two tables are 1.4 GB and 415MB. In my /etc/my.cnf file I have the key_index_size set to 3GB, but the most that will get used is 1.49GB, either after doing an "Optimize tables" or an "INSERT INDEX INTO CACHE" statement. My question is: How does MySQL decide how much of the systems memory to use for the key_index_size and any other of the processes allocatable address space. Also, under linux is the allocatable address space to an individual process 3GB or 4GB?
Allowable MySQL CPU Usage
I am running this query (with subqueries) in MySQL under Windows: SELECT sum(quantity)/(SELECT sum(quantity) from orders), partID from orders group by partID I noticed that it runs very slowly. It appears that MySQL is only using about 2% of CPU capacity, for some reason. The query takes almost 20 minutes to run on my table (whereas the same query takes only 1 minute in MS Access!). Is there a way to allow MySQL to use more of the CPU, so these queries can run more quickly?
Usage Of OPTIMIZE Command
I had a table of more than 800'000 rows where I deleted approx 200'000 rows. The documentation says that I shouldn't normally have to use the OPTIMIZE TABLE command, but performance on this table has not improved. Is it a good idea to use it?
Proper MySQL Usage
I'm looking to use MySQL on my next project, but I don't really know how to set it up so it fits my needs. I am making a Music Script Basically. All I need to store is Artist Name, Artist Videos, and Artist Songs. (just names of the stuff) Artist Videos & Artist Songs are unknown, size wise. Different artists are going to have different numbers of songs and videos.
Usage Of DELETE In A Query!
I know just enough about MySQL to insert, update and if necessary alter tables. But I helped someone that was wanting to delete a rwo of data selected with a form which presented all the row and had a link to take them to another page where it was confirmed by clicking another sumbit button that would remove the row selected from the prior page, then they sent a Private Message stating that the code worked, but then mentioned something about having a foreign key and not being able to delete that field. It is my limited understanding but if I had a table and did DELETE FROM tablename WHERE orderid='$orderid' then this would remove this row whatever the row with an orderis that matched. I built my own table which merely consisted of an autoincrementing PRIMARY KEY of orderid and when I tested the code the row was in fact removed, so what if there were a foreign key? I don't think it would matter, but after the PM I wonder.
Lowering Memory Usage
there's any way I can lower MySQL's = memory useage? It often uses more than 50000kb which I consider to much.. I'm guessing I should play with my.cnf or whatever it's called (located at = C:/ and windows calls it cardnumber or something)
Measuring Database Usage
I'm trying to write a backup script, but want to be 'resource smart' about it. I'd like to backup my database every hour or 2, but want to look at the current draw on the DB prior to running the backup. If the draw is within pre specified limits, do the backup, otherwise, sleep for a min then try again. This may be more of a job for a shell script, but I figured I'd give the mysql forum a try.
Showing Disk Usage
How can I see how much disk space is being occupied by an InnoDB table? Looking into /var/lib/mysql doesn't seem to work anymore for InnoDB tables. Please tell also if there is a way to see how much space is occupied by a particular row or column of a table.
4.0.14 Runs CPU Usage Up And Eventually Stop
I am running 4.0.14 on a FreeBSD 4.8-STABLE machine (upgraded to CVS from last week) and I am having a problem. We run a fairly large website using PHP so there is always many connections to the database. On 4.0.12 the cpu usage never shot to over 20% and ran extremely fast. After upgrading to 4.0.14, the cpu goes anywhere between 20-60% and in many situations will not accept any database connections. After browsing the website for a few minutes, I will type mysql on the command line and it will give an error of too many connections. Does anyone know what may be causing this high load from the upgrade? Again the previous versions did not do this and ran very well. I could use 4.0.12 but I wanted to report this in case it continues in future versions.
Single Computer (stand-alone) Usage?
I'm hoping to install MySQL on my home desktop computer (where I'm running Ubuntu Linux) and come close to simulating conditions at work (where we use MS Windows XP/Server/SQL Server). I'm also interested in doing this for an online "SQL Intro" course I'm going to be taking in October... Is it possible to install MySQL and work from my desktop PC as both the server and the client? If so, can somebody point me towards some documentation?
Configuration And Usage Of The Relation Feature
im just creating a new database for a browser roleplaying game. Maybe you can imagine how complex this can be sometimes. And while i was working on it i remembered a feature of the MS access database. At access you could create relations for various tables, so if u change a field in one table, it is changed for all fields related/linked to it. Is there a similar feature in mysql, and if yes, is it the "linked_tables" feature?
4.0.14 Runs CPU Usage Up And Eventually Stop
I am running 4.0.14 on a FreeBSD 4.8-STABLE machine (upgraded to CVS from last week) and I am having a problem. We run a fairly large website using PHP so there is always many connections to the database. On 4.0.12 the cpu usage never shot to over 20% and ran extremely fast. After upgrading to 4.0.14, the cpu goes anywhere between 20-60% and in many situations will not accept any database connections. After browsing the website for a few minutes, I will type mysql on the command line and it will give an error of too many connections. Does anyone know what may be causing this high load from the upgrade? Again the previous versions did not do this and ran very well. I could use 4.0.12 but I wanted to report this in case it continues in future versions.
Speed / Processor Usage Of Mysql
I am running MySQL 4.0.16-nt with the myODBC connector (3.51) on an IIS5 machine. If I am inserting a record it goes like the blink of an eye - 759 inserts boom done extremely fast. Then I run an ASP script to update the 759 records just inserted like this. SQLstmt = "UPDATE tblServer3 " SQLstmt = SQLstmt & "SET fldLand=" & strLand SQLStmt = SQLStmt & " WHERE fldDate='" & strNextContact & "' AND fldName='" & strName & "';" Set RS = Conn.Execute(SQLstmt) That specifies to filter based on name & date (I cannot filter on ID) Table has a total of 29,761 records The total table size is 2.2mb It does indeed to do the update, but it is extremely slow, 759 records updated in about 5 minutes, 40 seconds. That is about 2.2 records a second. Processor utilization shoots up to about 50% usage per processor (2 processors) Code:
Detecting High CPU Usage Queries
I know I can log slow queries, but what about ones that require a huge amount of CPU power to process? I have a lot of those lately it seems and I am trying to track down the culprits.
MYSQL_FIELD + Mysql_fetch_field, Memory Usage
I would like to understand when memory allocated by mysql for field is released. In my source code, you can see : MYSQL_FIELD *field; .. .. field = mysql_fetch_field(res); Is it normal to never free the FIELD variable ? Is there a function like mysql_free_result() for fileds?
Usage Of CONCAT Operator When Creating A View ...
I am trying to create a view and my syntax is as follows : CREATE OR REPLACE VIEW UDT_GRP_LDR_ACTIVE_V ( PRIKEY , Leader , Group_Name , Group_Description , Meeting_Frequency , Meeting_Time , Meeting_Day , Sector , Focus , AUTO_IMAGE , AUTO_SECURITY_AUTH ) AS SELECT A.PRIKEY , CONCAT (P.PER_FNAME, ' ', P.PER_LNAME) as Leader , G.GRP_NAME , G.GRP_DESC , G.MTG_FREQUENCY , G.MTG_TIME , G.MTG_DAY , G.SECTOR , G.FOCUS , P.AUTO_IMAGE , A.AUTO_SECURITY_AUTH FROM UDT_PER_GRP_ROLE A LEFT OUTER JOIN UDT_PERSON P ON A.PER_ID = P.PRIKEY LEFT OUTER JOIN UDT_CELL_GROUP_ACTIVE_V G ON A.GRP_ID = G.PRIKEY WHERE A.STS_ID = 1 AND A.ROLE_ID = 4; When I run this statement, I get the following error (in PHPMyAdmin) : "#1305 - FUNCTION hart7511_sope1.CONCAT does not exist". At first I thought it was a permissions issue on my account and contacted the SysAdmin at my web hosting company. I'm still waiting for a response from them, but the strange thing is that when I just run the SELECT statement on its own (without the CREATE OR REPLACE VIEW part), it runs fine ... so despite the wording of the error message, the problem doesn't really seem to be with "CONCAT" ... or am I missing something ? BTW I have created other views without using CONCAT and had no issues.
|