数据库优化:
数据库优化吧我觉应该从硬盘、内存和网络带宽考虑,提高硬盘的读写速度,增大带宽提高吞吐量,增大服务器内存,可以采用读写分离,降低单台数据库的访问压力,查询的时候控制数据量的大小,返回更少数据,减少交互次数,减少cpu及内存的开销,
sql优化:如果一个表中数据量过大我们可以采用横切割,如果一个表中字段过多,我们可以采用纵切割,适度冗余减少表关联查询,避免过多的联查,设计合理的表关系,适当建立索引,但是不能每个字段都建立索引,因为索引也要占用一定的物理存储空间,而且索引也需要动态维护,增加索引虽然可以提高查询速度,但是如果索引过多就会降低增删改的速度,写sql的时候也要注意,尽可能不要写一些让索引失效的sql,例如:索引的字段不能为空,不能进项模糊搜索,不能进项逻辑运算,不能使用函数,给索引查询的值应是已知数据,不能是未知字段值。也可以使用force(fou si)强制走索引,咱们常用的索引包括,单个索引、唯一索引、复合索引,单个索引就是创建的索引中只包含一个字段,复合索引是创建的一个索引中包含多个字段,创建索引:create index index_name on table_name(column_name)
怎么防止sql注入
- 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。
(1).使用PreparedStatement(pu pei er de si de te men ci)
sql注入只对sql语句的准备(编译)过程有破坏作用而PreparedStatement(pu pei er de si de te men ci)已经准备好了,执行阶段只是把输入串作为数据处理, 而不再对sql语句进行解析,准备,因此也就避免了sql注入问题.
(2).使用正则表达式过滤传入的参数
(3).字符串过滤
(4).jsp中调用该函数检查是否包函非法字符
(5).JSP页面判断代码 ”‘”,”\\”,”/”
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash(ha 史)掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。