mysql性能问题_MySQL
bitsCN.com
最近项目使用mysql数据库遇到了性能问题。单表400W以上数据时, 增,删,改,查 的速度都明显下降。
我们是做呼叫中心的,平均1秒钟就要处理20个呼叫,所以 最最保守的计算 1秒钟也要对单表进行20次插入操作,还有更多的查询操作,所以对性能要求略高。(有点儿跑题。。。。)
遇到了问题就要解决,优化!我们优化的步骤如下(过程中遇到的困难略):
1.优化索引,将所有sql语句,尤其是速度慢的都拿出来分析,一条一条的分析。(利用 EXPLAIN )要让所有查询都使用到索引。
2.优化mysql数据库本身,对my.cnf(my.ini)文件进行优化。但是个人觉得效果不是很明显(请牛人指导。)
my.cnf文件配置如下。(4核cpu 4G 内存)这个my.cnf 具体问题具体分析,配置起来也有很多事儿比较有讲究的。
所以需要逐步调试。(切忌不可大量修改后再重启mysql....有可能启动失败。)
Java代码
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir="D:/Program Files/MySQL/MySQL Server 5.1/"
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"
default-character-set=utf8
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=1000
query_cache_size=120M
table_cache=1024M
tmp_table_size=32M
thread_cache_size=64
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=64M
key_buffer_size=512M
max_allowed_packet = 32M
max_heap_table_size = 32M
table_open_cache = 512M
thread_concurrency = 8
innodb_lock_wait_timeout = 50
bulk_insert_buffer_size = 64M
key_cache_block_size=2048
skip-external-locking
skip-name-resolve
read_buffer_size=8M
read_rnd_buffer_size=8M
sort_buffer_size=64M
innodb_additional_mem_pool_size=20M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=8M
innodb_buffer_pool_size=512M
innodb_log_file_size=24M
innodb_thread_concurrency=10
3.分表 分表是解决大数据量的最佳方案。
我们的mysql数据库 单表400万 以上数据的时候就不符合性能要求了(我们对性能要求有点儿高)。但是我们一天产生的数据量就达到了单表200万。。总不能1天就建立一套表出来吧?? 那1,2年以后 数据库就会有600多套表(一套表有几十张呢,也就是上万张单表),看着都头疼呀。。。。。
4.从业务上解决,实现曲线救国。(这也是我们最后采用的方法,这个方法不一定适用其他业务)
我们的业务是这样,1小时对流水数据结转一次,生成统计数据。
最后决定生成插入流水数据的时候分2套流水表插入(一套用来保存流水数据,另一套用来结转统计数据。)
为什么要分成2套呢?
为了性能,用来保存流水数据的那套表就不去对它进行操作了。(起到备份数据之用。)
用来结转成统计数据的那套流水表,在结转结束之后就会删除掉以结转的数据。
这样一来,结转用的那套流水表的数据量就不会持续增长,也就保证了数据结转的效率。
希望对其他人 有点儿小启示。。。。。。
请大家不要笑我。。我的mysql 是盗版的。。。没有mysql DBA给我调优。更没有人会给我订制我们专用的mysql
只能这样曲线救国的解决了。。。。
作者“xsxjb”

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

有效监控 Redis 数据库对于保持最佳性能、识别潜在瓶颈和确保整体系统可靠性至关重要。 Redis Exporter Service 是一个强大的实用程序,旨在使用 Prometheus 监控 Redis 数据库。 本教程将指导您完成 Redis Exporter Service 的完整设置和配置,确保您无缝建立监控解决方案。通过学习本教程,您将实现完全可操作的监控设置

SQL数据库错误查看方法有:1. 直接查看错误消息;2. 使用SHOW ERRORS和SHOW WARNINGS命令;3. 访问错误日志;4. 使用错误代码查找错误原因;5. 检查数据库连接和查询语法;6. 使用调试工具。

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。
