最近在学习后端,弄到数据库这一块,一直听到数据库优化,下午在公司老师提了下,现在记录下,大体的方法。
首先: 最根本的是优化MYSQL的 一些配置参数,因为MYSQL原生只支持,数十个并发访问。要是数量级是万级百万级的并发访问,要进行MYSQL的配置优化。
然后: 开一个新的项目的时候,对需求分析建模的时候数据的设计,要设计的尽量最优。表与表之间的关系,多表连接查询,
建立更好的索引(索引遵循前缀)
最后就是 程序员级别的优化, 对 我们写的SQL语句进行优化,使用explain 关键字。可以看到语句的效率情况。
基本我目前大体上了解到这些东西。 以后了解了更多的再进行补充。
还有 其他的一些问题。
我们访问网站的时候是可以看到 图片,音频,视频, 怎么在数据库存储呢?
直接把文件存到数据库,通过转换成二进制存储,但是这样的话,会很耗费数据的资源和速度变慢,再这个追求更好的用户体验的时代,这样做用户是无法容忍的。
另一种方法是 把文件的地址url 作为字段存储在数据库,然后再通过编程语言进行访问获得。
这里给一片文章的地址,关于 存储。
文章名: 三种东西永远不要放到数据库里。
http://developer.51cto.com/art/201211/364472.htm
然后还有一个小知识点 如何实现下载文件。
下面给出代码: java
request.setCharacterEncoding("utf-8"); //设置字符集,防止乱码
String one=request.getParameter("one");//这个是选择下载那个文件
if("1".equals(one)){
response.setHeader("Content-Disposition", "attachment;filename=123.txt");//下载文件 在响应头里面给出信息 filename 是提供给用户的下载文件名称
String path=this.getServletContext().getRealPath("/123.txt"); //文件存储真是路径
FileInputStream fis=new FileInputStream(path);//读取字节流
byte[] buff=new byte[1024]; //缓冲
int len=0;
OutputStream os=response.getOutputStream(); //输出流
while((len=fis.read(buff))>0) //判断文件是否传输完毕
{
os.write(buff,0,len); //写
}
os.close(); //关闭
fis.close();//关闭
}