美文网首页
mysql一些问题点整理

mysql一些问题点整理

作者: 奔向学霸的路上 | 来源:发表于2020-06-15 20:46 被阅读0次

1. mybatis事务配置

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
</bean>
]<tx:annotation-driven transaction-manager="txManager"/>

2. mysql读写分离

可以通过sharing jdbc配置主从库,默认主库写,从库读

3. mysql索引

唯一索引、普通索引、组合索引、全文索引

全文索引主要用来查找文本中的关键字,目前可以在char,varchar,text列上使用。
在数据量比较大的时候,先将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext,然后再将数据写入的速度快很多。

4. mysql优化

分为索引优化、sql语句优化、表优化(可参考https://blog.csdn.net/c814276009/article/details/82656535

4.1 索引优化:

  > 比较好的文章[https://www.toutiao.com/i6732776474308248072/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1591060999&app=news_article&utm_source=weixin&utm_medium=toutiao_android&use_new_style=1&req_id=202006020923190100180851470B51B35C&group_id=6732776474308248072](https://www.toutiao.com/i6732776474308248072/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1591060999&app=news_article&utm_source=weixin&utm_medium=toutiao_android&use_new_style=1&req_id=202006020923190100180851470B51B35C&group_id=6732776474308248072)

- 在where子句经常使用的列,最好设置索引,这样会加快查找速度
- 对于有多个列where或者order by子句的,应该建立复合索引
- 对于like语句,以%或者‘-’开头的不会使用索引,以%结尾会使用索引
- 尽量不要在列上进行运算(函数操作和表达式操作)
- 尽量不要使用not in和<>操作 

4.2 慢SQL优化

image.png

4.2.1 捕获低效SQL
slow_query_log(这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句)
4.2.1 优化方法(略过)
4.2.2 优化原则

  • 查询时,尽量写全字段名,不使用*
  • 大多时候连接效率高于子查询
  • 多使用explain和profile分析查询语句
  • 查看慢查询日志,找出执行时间长的sql语句优化
  • 多表连接时,尽量小表驱动大表,即小表 join 大表
  • 在千万级分页时使用limit

4.3 数据库表优化

  • 表字段尽可能用not null
  • 表字段长度固定查询更快
  • 数据库大表按时间或者一定规律拆分为小表

水平切分:将记录散列到不同的表中,各表的结构完全相同,每次从分表中查询, 提高效率。
垂直切分:将表中大字段单独拆分到另外一张表, 形成一对一的关系。

5.SQL注入

推荐文章:http://javastack.cn/article/2019/sql-injection-vulnerabilities-completely-majestic/

直接使用JDBC,如果代码中存在拼接SQL语句,那么很可能会产生注入

// concat sqlString 
sql = "SELECT * FROM users WHERE name ='"+ name + "'";Statement stmt = connection.createStatement();ResultSet rs = stmt.executeQuery(sql);

安全的写法是使用参数化查询,即SQL语句中使用参数绑定占位符。
在MyBatis中,使用XML文件或Annotation来进行配置和映射,将interfaces和Java POJOs映射到database records,MyBatis 使用 #{} 来进行参数值替换

#{}:MyBatis 会自动生成 PreparedStatement ,使用参数绑定 ( ?) 的方式来设置值。
${}:MyBatis 会直接注入原始字符串,即相当于拼接字符串,因而会导致 SQL 注入。

相关文章

  • mysql一些问题点整理

    1. mybatis事务配置 2. mysql读写分离 可以通过sharing jdbc配置主从库,默认主库写,从...

  • MySQL复制线程长时间Opening tables

    最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache ...

  • MySQL数据库踩过的一些坑

    在使用MySQL期间的一些问题 1.下载地址:https://cdn.mysql.com//Downloads/M...

  • MySQL整理

    登录命令:mysql -h [IP 地址/域名] -P [端口] -u [用户名] -p[密码] 端口默认是...

  • MySQL整理

    为什么使用 b+ tree 存储索引? 二叉树的高度太高,红黑树比二叉树好,但高度也不可控,b+ tree 的高度...

  • Windows配置安装MySQl

    看了很多安装mysql教程,很多都会遇到一些问题,现将安装方法总结一下。 下载 在MySQL官网下载,Downla...

  • 关于mysql日志设置

    当你在在linux 中安装了mysql以后,难免会出现一些问题,例如当你Mysql出现启动,停止的时候出现的错误,...

  • Mycat 整合 MySQL 8.x 踩坑实践

    Mycat 目前还未全面支持MySQL 8以上的版本,可能会导致一些问题,例如Mycat连接MySQL 8时可能会...

  • MySql 安装后的基本操作

    内容来自 http://www.runoob.com/mysql/mysql-tutorial.html 并整理 ...

  • MYSQL 基本语法(上篇)

    @[TOC] MYSQL 本文整理自 菜鸟教程希望查看原文的请移步 菜鸟教程 安装 MYSQL MYSQL 下载 ...

网友评论

      本文标题:mysql一些问题点整理

      本文链接:https://www.haomeiwen.com/subject/qufhxktx.html