The JIRA was HBASE-5941 On Wed, Jun 27, 2012 at 3:05 PM, Amitanand Aiyer <[email protected]> wrote:
> There was some difference in the way locks are taken for batched deletes > and puts. This was fixed for 89. > > I wonder if the same could be the issue here. > > Sent from my iPhone > > On Jun 27, 2012, at 2:04 PM, "Jeff Whiting" <[email protected]> wrote: > > > I'm struggling to understand why my deletes are taking longer than my > inserts. My understanding is that a delete is just an insertion of a > tombstone. And I'm deleting the entire row. > > > > I do a simple loop (pseudo code) and insert the 100 byte rows: > > > > for (int i=0; i < 50000; i++) > > { > > puts.append(new Put(rowkey[i], oneHundredBytes[i])); > > > > if (puts.size() % 1000 == 0) > > { > > Benchmark.start(); > > table.batch(puts); > > Benchmark.stop(); > > } > > } > > > > > > The above takes about 8282ms total. > > > > However the delete takes more than twice as long: > > > > Iterator it = table.getScannerScan(rowkey[0], > rowkey[50000-1]).iterator(); > > while(it.hasNext()) > > { > > r = it.next(); > > deletes.append(new Delete(r.getRow())); > > if (deletes.size() % 1000 == 0) > > { > > Benchmark.start(); > > table.batch(deletes); > > Benchmark.stop(); > > } > > } > > > > The above takes 17369ms total. > > > > I'm only benchmarking the deletion time and not the scan time. > Additionally if I batch the deletes into one big one at the end (rather > than while I'm scanning) it takes about the same amount of time. I am > deleting the entire row so I wouldn't think it would be doing a read before > the delete ( > http://mail-archives.apache.org/mod_mbox/hbase-user/201206.mbox/%3CE83D30E8F408F94A96F992785FC29D82063395D6@s2k3mntaexc1.mentacapital.local%3E > ). > > > > Any thoughts on why it is slower and how I can speed it up? > > > > Thanks, > > ~Jeff > > > > -- > > Jeff Whiting > > Qualtrics Senior Software Engineer > > [email protected] > > >
