<commit_before>---
layout: post
title:  "Mysql batch insert"
date:   2015-06-18 21:30:00
categories: Mysql, Batch, hibernate, JDBC
---


350.000.000 Milyon Row'luk bir insert işlemi 25 saat gibi kısa bir sürede gerçekleşebilmesi için Mysql my.cnf my.ini dosyalarında [mysqld] altına;

[mysqld]
innodb_buffer_pool_size=2G

Yukarıdaki gibi ekleme yapmak gerekiyor. Ram miktarı mevcut sisteme göre değiştirilebilir, 4gb'lik bir Mac bilgisayarda bu değer uygun.

Hibernate Batch işlemleri için uygun değil nedenide batch insertlerde id ile ilgili sıkıntı yaşaması. Bu nedenle en uygun batch işlemi için JDBC batch kullanılmalı. Örnekler mevcut gayette kolay uygulanabiliyor.<commit_msg>30 Düzeltme<commit_after>---
layout: post
title:  "Mysql batch insert"
date:   2015-06-18 21:30:00
categories: Mysql, Batch, hibernate, JDBC
---


350.000.000 Milyon Row'luk bir insert işlemi 25 saat gibi kısa bir sürede gerçekleşebilmesi için Mysql my.cnf my.ini dosyalarında [mysqld] altına;

{% highlight sql %}
[mysqld]
innodb_buffer_pool_size=2G
{% endhighlight %}

Yukarıdaki gibi ekleme yapmak gerekiyor. Ram miktarı mevcut sisteme göre değiştirilebilir, 4gb'lik bir Mac bilgisayarda bu değer uygun.

Hibernate Batch işlemleri için uygun değil nedenide batch insertlerde id ile ilgili sıkıntı yaşaması. Bu nedenle en uygun batch işlemi için JDBC batch kullanılmalı. Örnekler mevcut gayette kolay uygulanabiliyor.

Mysql connection string'ine 

{% highlight sql %}
jdbc:mysql://localhost:8889/db_adi?rewriteBatchedStatements=true
{% endhighlight %}

Yıkardaki gibi soru işaretinden sonraki kısmın eklenmesi gerekiyor. İşin ilginç tarafı eklenmeyincede çalışıyor ama mysql dokümanlarında ekleyin yazıyor. Eski sürümlerde koyulması zorlu olabilir belki ama 5.5 versiyonunda koyulmasada çalışıyor.
{'fraction_non_alphanumeric': 0.0611672278338945, 'fraction_numerical': 0.03479236812570146, 'mean_word_length': 5.413669064748201, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6411576', 'n_tokens_mistral': 855, 'n_tokens_neox': 742, 'n_words': 207}