Android SQlite访问不够快?

Android SQlite访问不够快?,android,sqlite,udp,Android,Sqlite,Udp,我的申请有一个奇怪的问题 我必须将DB条目从电话1上的DB发送到电话2上的DB。预处理是智能的,因为它只发送丢失的条目,因此如果在DB 1中我有10个条目,在DB 2中我有0个条目,它会发送10个条目,但是如果电话2只接收到其中的5个条目(出于任何原因),那么下次只发送5个丢失的条目。条目通过UDP消息逐个发送。 事实上,我永远不会在第二部手机上收到第一次尝试时的所有条目,我必须尝试几次,每次我只能收到其中的3-4条。消息没有问题,我可以在发送端和接收端看到它们,所以我想这是一个数据库问题!数据

我的申请有一个奇怪的问题

我必须将DB条目从电话1上的DB发送到电话2上的DB。预处理是智能的,因为它只发送丢失的条目,因此如果在DB 1中我有10个条目,在DB 2中我有0个条目,它会发送10个条目,但是如果电话2只接收到其中的5个条目(出于任何原因),那么下次只发送5个丢失的条目。条目通过UDP消息逐个发送。
事实上,我永远不会在第二部手机上收到第一次尝试时的所有条目,我必须尝试几次,每次我只能收到其中的3-4条。消息没有问题,我可以在发送端和接收端看到它们,所以我想这是一个数据库问题!数据库是否可能无法根据到达的消息速率足够快地添加行?

听起来好像在发送数据库条目之间等待的时间不够长。您可以延长该时间,也可以在单个事务中执行所有插入操作。当您不使用事务时,插入完全可能需要一秒钟以上的时间

   db.beginTransaction();
   try {
     // Insert all the records here
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }

听起来好像在发送数据库条目之间等待的时间不够长。您可以延长该时间,也可以在单个事务中执行所有插入操作。当您不使用事务时,插入完全可能需要一秒钟以上的时间

   db.beginTransaction();
   try {
     // Insert all the records here
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }

为什么要使用UDP?如果您使用了TCP(它保证了交付),您就不会有这个问题。我非常怀疑SQLite是否是关键所在。我建议您在接收端添加一些日志记录,以确定消息被丢弃的确切时间点。查看
INSERT
语句是否实际为每条消息运行。你是不是在按顺序处理它们,或者为每个线程启动一个新线程?我使用UDP是因为我认为没有必要使用TCP,并且因为我以前与TCP服务器有问题:)问题不在发送/接收部分,因为从我的日志中,我可以看到所有消息都正确发送和接收。我认为您需要更好地处理故障点的位置真的是。您可以将大量数据写入SQLite,并且它不会简单地“忽略您”,如果它不能处理速度(您会遇到超时错误等),那么创建一个收集队列和一个从该队列中提取以插入数据库的辅助处理器可能是值得的。为什么要使用UDP?如果您使用了TCP(它保证了交付),您就不会有这个问题。我非常怀疑SQLite是否是关键所在。我建议您在接收端添加一些日志记录,以确定消息被丢弃的确切时间点。查看
INSERT
语句是否实际为每条消息运行。你是不是在按顺序处理它们,或者为每个线程启动一个新线程?我使用UDP是因为我认为没有必要使用TCP,并且因为我以前与TCP服务器有问题:)问题不在发送/接收部分,因为从我的日志中,我可以看到所有消息都正确发送和接收。我认为您需要更好地处理故障点的位置真的是。您可以将大量数据写入SQLite,并且它不会简单地“忽略您”,如果它不能处理速度(您会遇到超时错误等),那么创建一个收集队列和一个从该队列中提取并插入数据库的辅助处理器可能是值得的。我正在尝试实现您的解决方案,我会让您知道,谢谢。通过查看我的日志,我可以看到UDP消息在同一时间到达(现在3条消息,1毫秒后3条消息)!我正在尝试实施您的解决方案,我会让您知道的,谢谢。通过查看我的日志,我可以看到UDP消息在同一时间到达(现在3条消息,1毫秒后3条消息)!