How to convert about 16 million rows in mysql with least time?

vishgarg

I'm having about 1.6 million rows in a table having only two columns one is bigint unique index and another is longblob having photo in base64. I need to decode these base64 photos as soon as possible. I tried to use the java program which interrupts after few hours and the speed is also not good. Here is the program

Connection conn = null;
        Statement stmt = null;
        try {
            conn = DatabaseConnection.getConnection();
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
            ResultSet uprs = stmt.executeQuery("SELECT uniqueid,photo FROM newphotodata");
            String query="insert into photo_data values (?,?)";
            PreparedStatement pstmt =  conn.prepareStatement(query);
            while (uprs.next()) {
                byte[] processed = Base64Utils.base64Decode(uprs.getString(2));
                pstmt.setString(1, uprs.getString(1));
                pstmt.setBytes(2, processed);
                pstmt.executeUpdate();
                uprs.deleteRow();
            }
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null)
                    stmt.close();
                if(conn!=null)
                    conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

The second approach I've taken is using database trigger which uses base64_decode stored procedure I've created. Here is the trigger

DELIMITER $$

DROP TRIGGER `delete_photo`$$

CREATE TRIGGER `delete_photo` BEFORE DELETE ON `newphotodata`
FOR EACH ROW
BEGIN
    INSERT INTO `photo_data` SELECT OLD.`uniqueid`, BASE64_DECODE(OLD.`photo`);
END$$

DELIMITER ;

The speed of processing is again too slow. Is there any other method which can be used to perform the following task. I'm running Mysql version 5.0 in Redhat Linux with 96GB RAM, intel Xeon x5672.

Davide Lorenzo MARINO

The best way is create another table and insert the decoded photo using the pre built mysql function to decode encode on base64.

Inserting is faster than updating.

INSERT INTO photo_data 
SELECT OLD.uniqueid, FROM_BASE64(OLD.`photo`);

But this query can become very long if you don't commit every few rows. So the best way is create a procedure that make a commit every n rows.

Don't exit from mysql to have the best performances. Each transformation made outside mysql needs additional efforts.

Edited: Order the original data by uniqueId. If a problem happens you can restart from the last inserted id. You don't need to delete the original data. It improves your performances.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

update query with 1.5 million rows taking long time to execute mysql

From Dev

How to convert time format in mysql?

From Dev

how to convert numbers to million in javascript

From Dev

Loading 5 million rows into Pandas from MySQL

From Dev

Can MySQL handle 100 million+ rows?

From Dev

INSERT vs UPDATE: MySQL, 7 million rows

From Dev

Mysql database design: table with half a million rows

From Dev

MYSQL select to convert numbers to million,billions format

From Dev

How to convert a set of 4 rows to columns in MySQL?

From Dev

How to convert comma separated parameters to rows in mysql?

From Dev

MySQL PivotTable - How to convert dynamic columns to rows?

From Dev

How do I prevent running out of memory when inserting a million rows in mysql with php

From Dev

Metadata about rows in mysql?

From Dev

Excel : Need to delete about 1 million blank rows

From Dev

How to select rows between date and time in mysql?

From Dev

MySQL, how to get time difference between rows

From Dev

How to get a data range in a million rows dataset

From Dev

How to query against 18million rows?

From Dev

How to convert a date and time to be stored in mysql datetime

From Dev

How to convert second to Time using MYSQL

From Dev

How to convert Numbers in to Million in R dataframe

From Dev

convert rows to columns in mysql

From Dev

Convert rows to columns in mysql?

From Dev

How to delete duplicate MySQL tables rows while keeping at least one row

From Dev

How to convert a date/time to MySQL date/time format

From Dev

PHP/MySQL - Updating 70 million rows every week

From Dev

Optimal MYSQL query for longest prefix matching in a table with 5 million rows

From Dev

Slow Query on Medium MySQL Table (1 Million Rows)

From Dev

Using php/MySQL to run queries on 3+million rows

Related Related

  1. 1

    update query with 1.5 million rows taking long time to execute mysql

  2. 2

    How to convert time format in mysql?

  3. 3

    how to convert numbers to million in javascript

  4. 4

    Loading 5 million rows into Pandas from MySQL

  5. 5

    Can MySQL handle 100 million+ rows?

  6. 6

    INSERT vs UPDATE: MySQL, 7 million rows

  7. 7

    Mysql database design: table with half a million rows

  8. 8

    MYSQL select to convert numbers to million,billions format

  9. 9

    How to convert a set of 4 rows to columns in MySQL?

  10. 10

    How to convert comma separated parameters to rows in mysql?

  11. 11

    MySQL PivotTable - How to convert dynamic columns to rows?

  12. 12

    How do I prevent running out of memory when inserting a million rows in mysql with php

  13. 13

    Metadata about rows in mysql?

  14. 14

    Excel : Need to delete about 1 million blank rows

  15. 15

    How to select rows between date and time in mysql?

  16. 16

    MySQL, how to get time difference between rows

  17. 17

    How to get a data range in a million rows dataset

  18. 18

    How to query against 18million rows?

  19. 19

    How to convert a date and time to be stored in mysql datetime

  20. 20

    How to convert second to Time using MYSQL

  21. 21

    How to convert Numbers in to Million in R dataframe

  22. 22

    convert rows to columns in mysql

  23. 23

    Convert rows to columns in mysql?

  24. 24

    How to delete duplicate MySQL tables rows while keeping at least one row

  25. 25

    How to convert a date/time to MySQL date/time format

  26. 26

    PHP/MySQL - Updating 70 million rows every week

  27. 27

    Optimal MYSQL query for longest prefix matching in a table with 5 million rows

  28. 28

    Slow Query on Medium MySQL Table (1 Million Rows)

  29. 29

    Using php/MySQL to run queries on 3+million rows

HotTag

Archive