List:MySQL++« Previous MessageNext Message »
From:Warren Young Date:December 24 2010 3:33am
Subject:Re: 'vector<mysqlpp::row> v;' is crashing my program.
View as plain text  
On Dec 23, 2010, at 8:12 PM, Eric Sepich wrote:

> I am returning 299,000 rows

You actually need to have the entire content of every one of these rows in RAM at the same
time?

>          vector<mysqlpp::Row> v;
>          queryb << "SELECT * FROM sports_schedule";

That's hugely inefficient.

First, you aren't predimensioning the vector, so it's going to reallocate itself multiple
times as MySQL++ fills it up one row at a time.  A typical strategy for std::vector
implementations is to start small and double in size each time it needs more memory. 
Ignoring that initial size, log2(299000) is ~18.  Either say "v.reserve(300000)" or use
something that can grow efficiently, like std::list.

Second, "SELECT *" is a huge red flag.  Do you really need every column?  You can save RAM
and network bandwidth by selecting a subset of the columns.

Third, there is no WHERE clause.  Do you really need every row in the table?  Can the
server filter some subset of the rows for you?  If not, can you do it client-side with
Query::store_if(), so that you can at least save some RAM, if not network bandwidth?

Finally, Row isn't the most RAM-efficient way to hold data with MySQL++.  Switching to
SSQLS could help noticeably, if your data contains a lot of numeric columns.  If it's
mostly text, the difference will be negligible.

Thread
'vector<mysqlpp::row> v;' is crashing my program.Eric Sepich24 Dec
  • Re: 'vector<mysqlpp::row> v;' is crashing my program.Chris Frey24 Dec
  • Re: 'vector<mysqlpp::row> v;' is crashing my program.Warren Young24 Dec
  • Re: 'vector<mysqlpp::row> v;' is crashing my program.Tomalak Geret'kal24 Dec
    • Re: 'vector<mysqlpp::row> v;' is crashing my program.Adrian Cornish24 Dec
Re: 'vector<mysqlpp::row> v;' is crashing my program.Adrian Cornish24 Dec
Re: 'vector<mysqlpp::row> v;' is crashing my program.Adrian Cornish24 Dec
  • Re: 'vector<mysqlpp::row> v;' is crashing my program.Mengmeng Zhang24 Dec
Re: 'vector<mysqlpp::row> v;' is crashing my program.Mengmeng Zhang24 Dec
  • Re: 'vector<mysqlpp::row> v;' is crashing my program.Adrian Cornish24 Dec