IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 15, 2009, 4:43:54 PM (17 years ago)
Author:
jhoblitt
Message:

optimize get_replication_volume_for_ext_id query

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm

    r24386 r24423  
    233233    get_replication_volume_for_ext_id   => qq{
    234234        SELECT
    235             vol_id,
     235            m.vol_id,
    236236            host,
    237237            path,
    238238            xattr,
    239239            total - used as free
    240         FROM (
    241 -- This query works but is slow...
    242 --             SELECT
    243 --                  mountedvol.*
    244 --             FROM mountedvol
    245 --             WHERE
    246 --                 vol_id NOT IN(
    247 --                     SELECT vol_id
    248 --                     FROM storage_object
    249 --                     JOIN instance
    250 --                         USING(so_id)
    251 --                     WHERE ext_id = --
    252 --                  )
    253                 SELECT
    254                     m.*
    255                 FROM mountedvol AS m
    256                 LEFT JOIN instance AS i
    257                     ON m.vol_id = i.vol_id
    258                     AND i.so_id = (
    259                         SELECT so_id
    260                         FROM storage_object
    261                         WHERE ext_id = ?
    262                     )
    263                 WHERE
    264                     i.vol_id IS NULL
    265         ) as Foo
     240        FROM mountedvol AS m
     241        LEFT JOIN instance AS i
     242            ON m.vol_id = i.vol_id
     243            AND i.so_id = (
     244                SELECT so_id
     245                FROM storage_object
     246                WHERE ext_id = ?
     247            )
    266248        WHERE
    267             used / total < ?
     249            i.vol_id IS NULL
     250            AND used / total < ?
    268251            AND available = ?
    269252            AND allocate = ?
    270         ORDER BY RAND()
    271         LIMIT 1
     253            ORDER BY RAND()
     254            LIMIT 1
    272255    },
    273256    get_storage_volume          => qq{
Note: See TracChangeset for help on using the changeset viewer.