1、事务日志问题。比如事务日志文件丢失;事务日志文件在 *** 作过程中被误删;事务日志文件被损坏以及事务日志文件过大,导致硬盘的空间不足等;
2、意外掉电或异常强制关机,造成数据文件损坏,主要数据库正在被读写过程中异常关机;
3、数据库的表被破坏或索引等被破坏,或者数据库的其他对象被破坏或丢失等;
4、删除了数据文件,或者更改了它的名字;
5、硬盘损坏,造成数据和日志文件读写错误:
(1)感染病毒或者其他人为因素破坏;
(2)其他文件读写、存储等原因
1、索引列有函数处理或隐式转换,不走索引2、索引列倾斜,个别值查询时,走索引代价比走全表扫描高,所以不走索引
3、索引列没有限制 not null,索引不存储空值,如果不限制索引列是not null,oracle会认为索引列有可能存在空值,所以不会按照索引计算)
可能由病毒引起。在文件描述符关掉以后,继续使用这个文件描述符访问
打开文件,获取文件描述符fd(其实是一个整形)
关闭文件
打开sqlite文件,获取文件描述符(碰巧也是)fd
另一个线程继续使用fd,写文件
sqlite文件被损坏
在事务进行过程中,进行数据库备份或恢复
在数据库事务过程中,数据库文件既包括老的内容,也包括新的内容。如果此时拷贝这个文件,数据库可能会被损坏。 备份数据库最好使用sqlite的api。
删除日志文件
日志文件中包括rollback需要的信息。删除以后,无法正确回滚,有可能会导致数据库损坏。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)