数据库中的表总是会出现查询的数据都为null或者为空,但是数据表中确实有数据存在
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中的表总是会出现查询的数据都为null或者为空,但是数据表中确实有数据存在相关的知识,希望对你有一定的参考价值。
我修复表之后,问题就解决了,请问是什么原因造成的呢?如何调查此问题!
首先换数据库,MySQL处理这个数量级数据比较吃力。推荐你用DB2 或ORACLE如果不能换,检查一下存储引擎用InnoDB,如果是,检查
innodb_flush_log_at_trx_commit 这个选项,是否是1
如果是1 用SET AUTOCOMMIT = 0 ,提高数据修改速度
PHP优化需要
MySQL Slow Log 分析工具分析日志:mysqldumpslow或mysqlsla比较不错。
Explain/ DESC 分析SQL 的执行情况和SHOW PROCESSLIST
使用SHOW PROCESSLIST 看是否有锁表情况,
设置 my.cnf 中的long-query-time 和log-slow-queries 记录服务器那些SQL执行速度比较慢
根据上述情况查看对对应的SQL语句进行优化
优化服务器性能,用RAID5(SAN),加内存本身的升级,提高硬盘I/O性能。
数据库总体性能优化:
数据表最好能拆成小表。
数据库切片,分到不用的服务器上,
数据库访问性能优化
修改my.cnf, 下面是影响比较大的:
innodb_flush_log_at_trx_commit 设置为0
如果比下面值大就不用调整了:
query_cache_size 设置为16M
sort_buffer_size 设置为16M
record_buffer 设置为16M
key_buffer_size 设置为8M
innodb_buffer_pool_size 设置为32M
下面是建议设置的
table_cache 设置为512
read_buffer_size 设置为16M
myisam_sort_buffer_size设置为16M
innodb_additional_mem_pool_size 设置为128M
innodb_log_file_size 设置为256M
innodb_log_buffer_size设置为8M
数据库表优化,
1 建立相应的INDEX
2 统一编码,MySQL的默认编码是Latin1,不支持中文,需要把数据库的默认编码修改为gbk或者utf8
show variables like 'character%' 查看
另外表的编码也要与数据库统一 参考技术A 你是咋修复表的? 是查表时写错数据库了吧,或者是数据没有保存就去查询了
JSONObject optString或者getString方法取null问题
参考技术A 近来,在与服务端联调时发现个问题,总是拿不到数据,后来服务端发现客户端有个值为字符串"null"传过去了,服务端解析不了,导致该问题。那为什么会传字符串"null"呢?原来是服务端下发的该值为null,但通过JSONObject.optString方法进行解析时,会把null转变为"null"字符串,故而出现该问题。另外,其getString方法也有这个问题。如:json数据:
"title": null,
"autoPlay": 0
则通过optString或者getString拿到的title为"null",则错误。
那么应如何避免呢?一个是服务端不下发null,防止该问题; 第二种方法则是客户端拿到数据后进行校正,校正方法有二:1、optString后进行判断是不是"null"字符串,是的话则置空;2、在调用optString前先通过JSONObject.isNull这个方法进行检测,如果不是null再取值,以防止得到"null"字符串。
以上是关于数据库中的表总是会出现查询的数据都为null或者为空,但是数据表中确实有数据存在的主要内容,如果未能解决你的问题,请参考以下文章